int subarraySum(vector<int>& nums, int k) { int cnt=0,n=nums.size(),sum=0; vector<int> acc(n+1,0); acc[0]=0; for(int i=0;i<n;++i) { sum+=nums[i]; acc[i+1]=sum; } for(int i=0;i<n;++i) { for(int j=i;j<n;++j) { if(acc[j+1]-acc[i]==k)cnt++; } } return cnt; } int subarraySum2(vector<int>& nums, int k)//use hash { int sum=0,cnt=0; unordered_map<int,int> hash; hash[0]=1; for(int x:nums) { sum+=x; cnt+=hash[sum-k]; ++hash[sum]; } return cnt; }
转载于:https://www.cnblogs.com/xLester/p/7570289.html