LeetCode:和为K的子数组

java 复制代码
class Solution {
    public int subarraySum(int[] nums, int k) {
        Map<Integer,Integer> preSumMap = new HashMap<>();

        preSumMap.put(0,1);
        //记录一共多少子数组
        int count = 0;
        //记录当前总和
        int preSum = 0;

        for(int i = 0; i < nums.length; i++){
            preSum += nums[i];
            //目标总和 = 之前总和 - k
            int target = preSum - k;

            if(preSumMap.containsKey(target)){
                count += preSumMap.get(target);
            }
            //将当前总和放到PreSumMap中,便于后续查找
            preSumMap.put(preSum,preSumMap.getOrDefault(preSum,0) + 1);
        } 
        return count;
    }
}

preSumMap.put(preSum,preSumMap.getOrDefault(preSum,0) + 1):

查找preSumMap中是否有preSum这个数字,有把次数返回,没有就是0

相关推荐
Feynman’s boom3 小时前
PDF解析复盘
数据库·人工智能·算法·pdf解析
郝学胜-神的一滴4 小时前
《C++11 工程级应用01:告别冗长类型,开启简洁高效编码新时代》深度解读
开发语言·c++·算法·软件开发·系统设计
学习中.........5 小时前
Transformer 训练资源估算:以 CS336 GPT-2 XL 配置为例
人工智能·python·算法·机器学习·自然语言处理
Navigator_Z11 小时前
LeetCode //C - 1206. Design Skiplist
c语言·算法·leetcode
码行山野赴时序归途11 小时前
三道经典数组题:从暴力到最优的算法思维
c语言·开发语言·数据结构·算法·leetcode
徐小夕11 小时前
3分钟从想法到Agent上线:我们开源了一款AI可视化工作流“IDE”
前端·算法·github
sel_912 小时前
【强化学习】Hands-on Modern RL项目实践|OPD 算法完整解析
人工智能·深度学习·算法·机器学习·语言模型
Navigator_Z13 小时前
LeetCode //C - 1209. Remove All Adjacent Duplicates in String II
c语言·算法·leetcode
ShineWinsu15 小时前
对于 C++:C++14中从变量模板、泛型 Lambda 到并发与字面量的解析
c++·算法