leetcode——和为K的子数组(java)

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

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

示例 1:

复制代码
输入:nums = [1,1,1], k = 2
输出:2

示例 2:

复制代码
输入:nums = [1,2,3], k = 3
输出:2

解题方法:(哈希表+前缀和)

1.经过分析此题可以用哈希表与前缀和的方法进行解题,首先其涉及到与k的差值的问题,可以用哈希表来记录。

2.其次由于其是子数组的和,所以我们可以使用前缀和来进行记录。

3.创建哈希表之后,我们需要提前将(0, 1)添加进去,因为当我们的差值为0时,说明当前的元素可以组成长度为1的子数组。

4.开始遍历数组,并且当我们的差值在哈希表中出现时,将其值加入到结果中,最后别忘了更新键值对。

java 复制代码
class Solution {
    public int subarraySum(int[] nums, int k) {
        int n = nums.length;
        int ans = 0, sum = 0;
        HashMap<Integer, Integer> map = new HashMap<>();
        map.put(0, 1);
        for (int i = 0; i < n; i++) {
            sum += nums[i];
            if (map.containsKey(sum - k)) {
                ans += map.get(sum - k);
            }
            map.put(sum, map.getOrDefault(sum, 0) + 1);
        }
        return ans;
    }
}
相关推荐
Java内核笔记6 小时前
告别十亿美元的错误 : Spring Boot 4 空安全 (JSpecify) 实战
java·spring boot·后端
烬羽6 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题
javascript·深度学习·算法
糖果店的幽灵6 小时前
langgraph的 MessagesState 解读
java·开发语言·人工智能·windows·langgraph
闪电悠米6 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
WL学习笔记7 小时前
堆(数据结构)
数据结构·
星空露珠7 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
极光代码工作室7 小时前
基于SpringBoot的在线博客系统
java·springboot·web开发·后端开发
我是唐青枫8 小时前
Java Spring Security 实战详解:从登录认证到 JWT 权限控制
java·spring
ihuyigui8 小时前
海外签收通知短信接口
android·java·开发语言·前端·数据库·后端
海棠Flower未眠8 小时前
SpringBoot 消息死信队列(荣耀典藏版)
java·数据库·spring boot