[LeetCode] 560. Subarray Sum Equals K

来源:互联网 发布:ubuntu传文件 编辑:程序博客网 时间:2024/06/06 01:57


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;}