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 @   kukudev  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示