Leetcode 560. 和为 K 的子数组

560. 和为 K 的子数组 - 力扣(LeetCode)

java 复制代码
class Solution {
    /**
    思路:用一个map记录前缀和,key是数值合m,value是这个m出现了n次。
    这样遍历数组,比如i从0开始,遍历到i=j时,算下下标从0-j所有元素和是多少,比如是m,
    然后算下m-k这个数值有没有出现过。
    如果出现过c次,那就是之前有c种子串和是m-k,那就对应有c种子串是k的情况;
    如果没有出现过,那就是把数值和是m的放进map,用于下次计算
     */
    public int subarraySum(int[] nums, int k) {
        Map<Integer,Integer> prefixSum=new HashMap<>();
        int res=0;
        int cnt=0;
        prefixSum.put(0,1);
        for(int i=0;i<nums.length;i++){
            cnt+=nums[i];
            // map的判断key是否存在使用containsKey,这个好好记忆一下
            if(prefixSum.containsKey(cnt-k)){
                res+=prefixSum.get(cnt-k);
            }
            if(prefixSum.get(cnt)==null){
                prefixSum.put(cnt,1);
            } else {
                prefixSum.put(cnt,prefixSum.get(cnt)+1);
            }
        }
        return res;
    }
}
相关推荐
开开心心就好3 分钟前
打印机卡住打不了?一键清理卡死打印队列
服务器·开发语言·算法·pdf·ocr·idea·visual studio code
格物致胜工业数智技术6 分钟前
锂电纠偏测量那些坑,明治ETD-0612激光纠偏传感器怎么填?
人工智能·算法
垆边人似月.10 分钟前
带权区间调度,优先级可负
算法
重生之小比特11 分钟前
【算法拾光】双指针|三数之和 + 四数之和
算法
我爱工作&工作love我13 分钟前
P14359 [CSP-J 2025] 异或和
算法
茉莉玫瑰花茶14 分钟前
GO [ 数据格式 ]
服务器·网络·算法·golang
小poop16 分钟前
高级排序算法与性能对比——归并、非比较排序及总结
数据结构·算法·排序算法
aqiu11111116 分钟前
CodeTop按顺序刷题0003:LeetCode 206. 反转链表(迭代法图文详解与动态演示)
算法·leetcode·链表
果霸大叔43 分钟前
AI网关第8篇:AI 代理与负载均衡--多模型实例如何调度?
人工智能·算法·自然语言处理·负载均衡·ai-native
不会就选b1 小时前
算法日常・每日刷题--<动态规划>29
数据结构·算法·leetcode