美文网首页
(前缀和)和为k的子数组

(前缀和)和为k的子数组

作者: 小幸运Q | 来源:发表于2021-05-02 12:15 被阅读0次

    image.png

    需要处理一个特殊前缀和(即-1位置对应的前缀和为0,直接设置map[0]=1即可),在添加sums进map之前需要计算该点之前有多少点满足到该点的和为k。map存储前缀和key对应的点个数。

    class Solution {
    public:
        int subarraySum(vector<int>& nums, int k) {
            unordered_map<int,int>m;
            int sums=0;
            int counts=0;
            m[0]=1;
            for(int i=0;i<nums.size();i++){
                sums+=nums[i];
                if(m.count(sums-k)){
                    counts+=m[sums-k];
                }
                m[sums]++;
            }
            return counts;
        }
    };
    

    相关文章

      网友评论

          本文标题:(前缀和)和为k的子数组

          本文链接:https://www.haomeiwen.com/subject/lhvprltx.html