leetcode hot 13

解题思路:本题思路主要是前缀和思想,涉及到子集和问题,前缀和思想有效,两个前缀和的差就等于对应一个子集和。本题可以用哈希表的方式记录每个前缀和的值,核心依靠k = pre[j]-pre[i]转化成pre[j]-k=pre[i],计算pre[i]这个值出现的个数加到res中,最后返回。

class Solution {
    public int subarraySum(int[] nums, int k) {
        Map<Integer,Integer> hashmap = new HashMap<>();
        hashmap.put(0,1);
        int res = 0;
        int sum = 0;
        for(int num:nums){
            sum+=num;
            if(hashmap.containsKey(sum-k)){
                res += hashmap.get(sum-k);
            }
            hashmap.put(sum,hashmap.getOrDefault(sum,0)+1);
        }
        return res;
    }
}
posted @ 2025-02-26 19:55  kukudev  阅读(7)  评论(0)    收藏  举报