剑指 Offer II 010. 和为 k 的子数组

阅读 55

2022-01-24

题目

力扣

思路 前缀和+哈希表

遍历数组,计算前缀和,把前缀和以及该前缀和出现的次数存入哈希表。如果发现哈希表中有前缀和等于sum-k,就cnt+=map[sum-k]。注意前缀和为0的情况,要初始化map[0]=1.

代码

class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {
        int sum=0,cnt=0;
        unordered_map<int,int> map;
        map[0]=1;
        for(int num:nums){
            sum+=num;
            if(map.find(sum-k)!=map.end())
                cnt+=map[sum-k];
            map[sum]++;
        }
        return cnt;
    }
};

精彩评论(0)

0 0 举报