class Solution {
public:
int subarraySum(vector<int>& nums, int k) {
int n=nums.size(),res=0;
vector<int> s(n+1,0);
unordered_map<int,int> hash;//记录端点i之前所有前缀和的出现情况
for(int i=1;i<=n;i++)
s[i]=s[i-1]+nums[i-1];
hash[0]=1;
for(int i=1;i<=n;i++)
{
res+=hash[s[i]-k];
hash[s[i]]++;
}
return res;
}
};
LeetCode 560. 和为 K 的子数组
发布时间 2023-07-26 12:32:33作者: 穿过雾的阴霾