0
点赞
收藏
分享

微信扫一扫

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

小_北_爸 2022-01-24 阅读 55
leetcode

题目

力扣

思路 前缀和+哈希表

遍历数组,计算前缀和,把前缀和以及该前缀和出现的次数存入哈希表。如果发现哈希表中有前缀和等于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 条评论