【算法笔记】力扣热题100(LeetCode hot-100)560. 和为 K 的子数组

ops/2025/1/22 17:03:04/

力扣热题100(LeetCode hot-100)之 560. 和为 K 的子数组

本文主要记录算法思路,着急要答案的同学可以直接跳转到最后的代码。

题目

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。子数组是数组中元素的连续非空序列。示例 1:输入:nums = [1,1,1], k = 2
输出:2
示例 2:输入:nums = [1,2,3], k = 3
输出:2提示:1 <= nums.length <= 2 * 104
-1000 <= nums[i] <= 1000
-107 <= k <= 107

题解

这个问题,一般怎么解?

思路:

使用 前缀和哈希表 的方法。

  1. 定义一个哈希表 map,用于存储前缀和及其出现的次数。
  2. 初始化前缀和 preSum 为 0,前缀和为 0 的个数为 1。
  3. 遍历数组,计算当前的前缀和 preSum。
  4. 如果 map 中存在 preSum - k,说明存在一个子数组的和为 k,更新计数器 count。
  5. 更新哈希表中前缀和的个数

答案

class Solution {public int subarraySum(int[] nums, int k) {final var map = new HashMap<Integer, Integer>();// 初始化,前缀和为0的个数为1map.put(0, 1);int preSum = 0;int count = 0;for (int num : nums) {preSum += num;if (map.containsKey(preSum - k)) { // 如果存在前缀和为preSum - k的子数组,那么这个子数组到当前位置的和为kcount += map.get(preSum - k);}// 更新前缀和为preSum的子数组个数map.put(preSum, map.getOrDefault(preSum, 0) + 1);}return count;}
}

在这里插入图片描述


http://www.ppmy.cn/ops/152238.html

相关文章

社区版Dify实现文生视频 LLM+ComfyUI+混元视频

社区版Dify实现文生视频 LLMComfyUI混元视频 一、 社区版Dify实现私有化混元视频效果二、为什么社区版Dify可以在对话框实现文生视频&#xff1f;LLMComfyUI混元视频 实现流程图&#xff08;重点&#xff09;1. 文生视频模型支持ComfyUI2. ComfyUI可以轻松导出API实现封装3. Di…

1.2.神经网络基础

目录 1.2.神经网络基础 1.2.1.Logistic回归 1.2.2 梯度下降算法 1.2.3 导数 1.2.4 向量化编程 1.2.5 正向传播与反向传播 1.2.6.练习 1.2.神经网络基础 1.2.1.Logistic回归 1.2.1.1.Logistic回归 逻辑回归是一个主要用于二分分类类的算法。那么逻辑回归是给定一个x ,…

金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析

金融资产波动率建模在现代金融工程中具有重要地位&#xff0c;其应用涵盖风险管理、衍生品定价和投资组合优化等核心领域。本文着重探讨三种主流波动率建模方法&#xff1a;广义自回归条件异方差模型(GARCH)、Glosten-Jagannathan-Runkle-GARCH模型(GJR-GARCH)以及异质自回归模…

mysql的mvcc

快速搞懂mvcc 全称 multi-version concurrency control 多版本并发控制。自动开启事务undo log读视图(read_view)结果过滤mvcc只在读已提交和可重复读隔离级别下运作读已提交隔离级别下&#xff0c;可重复读隔离级别下&#xff0c;总的来说mvcc是为了提高数据库并发性能而设计的…

springboot 配置多数据源以及动态切换数据源

场景 我们springboot项目&#xff0c;通常会有多个数据库&#xff0c;例如mysql,vertica,postgresql等等数据库&#xff0c;通常我们需要动态切换使用我们想要的数据库&#xff0c;这时候就需要配置多数据源了 多数据源特性 支持多数据库类型&#xff1a;例如&#xff0c;同…

IOC有什么优势

IOC&#xff08;控制反转&#xff0c;Inversion of Control&#xff09; 是一种设计原则&#xff0c;广泛应用于软件开发中&#xff0c;尤其是面向对象编程中。IOC 的主要优势体现在以下几个方面&#xff1a; 1. 解耦合&#xff08;Decoupling&#xff09; 减少依赖性&#x…

map和set的使用(一)详解

文章目录 序列式容器和关联式容器map和set的介绍set构造和迭代器遍历和insertfinderaseswapclearcountlower_bound和upper_boundmultiset和set的对比 set的二个题目题目解析算法原理代码介绍一个找差集的算法同步算法题目解析算法原理代码 map构造遍历initiaizer_list 序列式容…

【2024年CSDN平台总结:新生与成长之路】

&#x1f4ab;引言 2024年已经过去&#xff0c;回顾这一年&#xff0c;所有的经历依然历历在目。以“经验”为动力&#xff0c;我正迈向2025年。回顾自己在CSDN平台上的创作之路&#xff0c;收获满满、成长颇多&#xff0c;也有许多宝贵的感悟。接下来&#xff0c;我将分享这一…