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

相关推荐
Re.不晚1 小时前
挑战做100道力扣算法- DAY1
算法·leetcode·职场和发展
蓝悦无人机1 小时前
《Planning algorithms》读书笔记——第1章 引言
算法·读书笔记·规划算法·lavalle
Sagittarius_A*2 小时前
分组密码基础(二):Feistel 结构与 DES 的设计思想
算法·信息安全·密码学·des·数论
青山木2 小时前
Hot 100 --- 搜索插入位置
java·数据结构·算法·leetcode
alexwang2112 小时前
HDU 4348 详细题解
c++·算法·题解·hdu·主席树·可持久化数据结构·可持久化线段树
可编程芯片开发3 小时前
基于分段变步长搜索RMDCFT算法的天基雷达空间机动目标检测方法MATLAB仿真,对比RMDCFT算法
算法
2501_946736163 小时前
在线考试平台如何选型?从功能、优势与应用场景角度详解
大数据·人工智能·算法
天辛大师4 小时前
天心大师:不确定中锚定自我,AI生活的哲学命题
人工智能·算法·决策树·机器学习·生活·启发式算法
皓月斯语4 小时前
B2132 素数对
c++·算法·题解
星轨初途5 小时前
LeetCode 热题 100——day2 字母异位词分组
c++·算法·leetcode