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 分钟前
LeetCode-1-两数之和
java·数据结构·后端·python·算法·leetcode·rust
不知名XL8 分钟前
day20 回溯算法part02
算法
嵌入式进阶行者11 分钟前
【算法】TLV格式解析实例:华为OD机考双机位A卷 - TLV解析 Ⅱ
数据结构·c++·算法
OC溥哥99917 分钟前
Paper MinecraftV3.0重大更新(下界更新)我的世界C++2D版本隆重推出,拷贝即玩!
java·c++·算法
Jayden_Ruan19 分钟前
C++蛇形方阵
开发语言·c++·算法
星火开发设计21 分钟前
C++ map 全面解析与实战指南
java·数据结构·c++·学习·算法·map·知识
执笔论英雄21 分钟前
【RL] advantages白化与 GRPO中 advantages均值,怎么变化,
算法·均值算法
2301_8008951024 分钟前
hh的蓝桥杯每日一题
算法·职场和发展·蓝桥杯
老鱼说AI29 分钟前
现代计算机系统1.2:程序的生命周期从 C/C++ 到 Rust
c语言·c++·算法
仰泳的熊猫32 分钟前
题目1099:校门外的树
数据结构·c++·算法·蓝桥杯