【前缀和+哈希】LCR 010. 和为 K 的子数组

求解代码

java 复制代码
public int subarraySum(int[] nums, int k) {
        // 哈希表:key=前缀和,value=该前缀和出现的次数
        HashMap<Integer, Integer> map = new HashMap<>();

        int sum = 0; // 记录当前遍历到的前缀和
        int ans = 0;

        // 初始化前缀和为0的情况出现了1次
        map.put(0, 1);

        for (int i = 0; i < nums.length; i++) {
            sum += nums[i]; // 累加当前元素,得到当前前缀和sum

            // 查找是否存在sum - k,存在则累加次数到结果
            if (map.containsKey(sum - k)) {
                ans += map.get(sum - k);
            }

            // 将当前前缀和存入哈希表:若已存在则次数+1,否则设为1
            map.put(sum, map.getOrDefault(sum, 0) + 1);
        }
        return ans;
    }
相关推荐
只是懒得想了5 小时前
C++实现密码破解工具:从MD5暴力破解到现代哈希安全实践
c++·算法·安全·哈希算法
m0_736919105 小时前
模板编译期图算法
开发语言·c++·算法
dyyx1115 小时前
基于C++的操作系统开发
开发语言·c++·算法
m0_736919106 小时前
C++安全编程指南
开发语言·c++·算法
蜡笔小马6 小时前
11.空间索引的艺术:Boost.Geometry R树实战解析
算法·r-tree
-Try hard-6 小时前
数据结构:链表常见的操作方法!!
数据结构·算法·链表·vim
2301_790300966 小时前
C++符号混淆技术
开发语言·c++·算法
我是咸鱼不闲呀6 小时前
力扣Hot100系列16(Java)——[堆]总结()
java·算法·leetcode
嵌入小生0076 小时前
单向链表的常用操作方法---嵌入式入门---Linux
linux·开发语言·数据结构·算法·链表·嵌入式
LabVIEW开发6 小时前
LabVIEW金属圆盘压缩特性仿真
算法·labview·labview知识·labview功能·labview程序