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;
    }
}
相关推荐
Yupureki20 分钟前
《算法竞赛从入门到国奖》算法基础:动态规划-路径dp
数据结构·c++·算法·动态规划
副露のmagic1 小时前
数组章节 leetcode 思路&实现
算法·leetcode·职场和发展
荣光属于凯撒1 小时前
P2176 [USACO11DEC] RoadBlock S / [USACO14FEB] Roadblock G/S
算法·图论
雨季mo浅忆1 小时前
记录利用Cursor快速实现拖拽式问卷题型创建
算法
酉鬼女又兒1 小时前
零基础快速入门前端Web存储(sessionStorage & localStorage)知识点详解与蓝桥杯考点应用(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·javascript·职场和发展·蓝桥杯·html
Yzzz-F1 小时前
2018-2019 ACM-ICPC, Asia Dhaka Regional ContestC[数论]
算法
Frostnova丶1 小时前
LeetCode 3474. 字典序最小的生成字符串
算法·leetcode·职场和发展
REDcker1 小时前
Nagle 算法与 TCP_NODELAY、TCP_CORK 详解
网络·tcp/ip·算法
AlenTech1 小时前
136. 只出现一次的数字 - 力扣(LeetCode)
leetcode
β添砖java2 小时前
深度优先搜索DFS
算法·深度优先