LeetCode Hot100 560.和为K的子数组

题目描述

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k的子数组的个数

子数组是数组中元素的连续非空序列。

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

思路

想象有一根很长的绳子(数组),你想从中间剪下一段(子数组),让这一段的长度正好是 k。

如果你知道从绳子开头到当前剪刀位置的总长度(presum),你只需要往回看:"之前有没有哪个位置,距离开头正好是 presum - k?"

如果能找到这样一个点,那么从那个点到当前点之间的这一段,长度就一定是 k。

只需要使用hashmap每次存储当前所有出现过的前缀和以及该前缀和出现的次数。

遍历数组,每次更新前缀和以后判断presum-k是否存在,如果存在则累加次数。然后将当前的presum加入hashmap

代码

java 复制代码
class Solution {
    public int subarraySum(int[] nums, int k) {
        HashMap<Integer,Integer> map =new HashMap<>();
        int res=0,presum=0;
        map.put(0,1);
        for(int num:nums){
            presum+=num;
            if(map.containsKey(presum-k)){
                res+=map.get(presum-k);
            }
            map.put(presum,map.getOrDefault(presum,0)+1);
        }
        return res;
    }
}
相关推荐
爱睡懒觉的焦糖玛奇朵4 小时前
【从视频到数据集:焦糖玛奇朵的魔法工具使用说明】
人工智能·python·深度学习·学习·算法·yolo·音视频
Runawayliquor4 小时前
opbase:CANN 所有算子的公共地基
大数据·数据库·人工智能·算法
徐安安ye4 小时前
FlashAttention 为什么对序列长度这么“敏感”?
人工智能·算法
黎阳之光6 小时前
黎阳之光:以视频孪生重构智能监盘,为燃机打造新一代智慧电厂大脑
大数据·人工智能·算法·安全·数字孪生
绝知此事6 小时前
【算法突围 02】树形结构与数据库索引:树形结构与数据库索引:从 BST 到 B+ 树的演化与 MySQL 优化
数据库·mysql·算法·面试·b+树
清木!7 小时前
排序算法比较
数据结构·算法·排序算法
吴可可1237 小时前
用Teigha修改并保存CAD文件
数据库·算法·c#
汉克老师8 小时前
GESP6级C++考试语法知识(十七、数据结构(三、认识队列 Queue))
数据结构·c++·队列·gesp6级·gesp六级·数组模拟队列
灰灰勇闯IT8 小时前
ops-reduce:ReduceMax 与 ReduceMean 的并行优化
算法
水木流年追梦9 小时前
大模型入门-Reward 奖励模型训练
开发语言·python·算法·leetcode·正则表达式