LeetCode 热门100题-和为 K 的子数组

news/2025/2/15 15:19:18/

题目描述:

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

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

示例 1:

输入:nums = [1,1,1], k = 2
输出:2
class Solution {
public:int subarraySum(vector<int>& nums, int k) {unordered_map<int, int> prefix_sum_map; // 前缀和出现次数prefix_sum_map[0] = 1; // 初始化为0,表示从数组开头到当前元素和为k的子数组存在int current_sum = 0; // 当前前缀和int count = 0; // 子数组的个数for (int num : nums) {current_sum += num; // 更新当前前缀和if (prefix_sum_map.find(current_sum - k) != prefix_sum_map.end()) {count += prefix_sum_map[current_sum - k]; // 找到符合条件的子数组}prefix_sum_map[current_sum]++; // 更新前缀和的出现次数}return count;}
};

和为k的子数组的概念:就是从某个数开始到某个数结束(也可以是某个数自己开始到它自己结束),他们的和为k。

那反过来,先把数组中所有元素先进行从0开始的累加。如示例 进行累加之后将是:0,1,2,3

可以将原来的数组看作是一个数列{An},求和后的数列看作是{Sn},那么Sn-S(n-k)的结果就是从第(n-k)项开始到第n项的和,用Δ来接收这个数值,就是Δ=Sn-S(n-k),如果Δ=target,则表示找到了一次和为target的子序列,子序列从第(n-k)开始到第n结束,由于此时n和k都是任意数,所以用这个公式可以适用于题目要求。


http://www.ppmy.cn/news/1572269.html

相关文章

1、Prometheus 监控系统(上)

Prometheus 监控系统&#xff08;上&#xff09; 认识一下 PrometheusPrometheus 的特点Prometheus 的生态组件Prometheus 的工作模式Prometheus 的工作流程Prometheus 的局限性&#xff1a; 部署 PrometheusPrometheust Server 端安装和相关配置部署 Exporters部署 Node Expor…

基于SpringBoot的电影院售票管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

Ubuntu 24.04 上安装 Nginx

在 Ubuntu 24.04 上安装 Nginx&#xff0c;可以按照以下步骤进行&#xff1a; 更新系统包 首先&#xff0c;确保你的包管理器是最新的。打开终端并执行&#xff1a; sudo apt update sudo apt upgrade安装 Nginx 安装 Nginx 只需要运行以下命令&#xff1a; sudo apt install n…

基于Flask的影视剧热度数据可视化分析系统的设计与实现

【FLask】基于Flask的影视剧热度数据可视化分析系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 随着互联网技术的飞速发展&#xff0c;影视剧行业的数据量呈爆炸性增长&#x…

好好说话:深度学习扫盲

大创项目是和目标检测算法YOLO相关的&#xff0c;浅浅了解了一些有关深度学习的知识。在这里根据本人的理解做一些梳理。 深度学习是什么&#xff1f; 之前经常听到AI&#xff0c;机器学习&#xff0c;深度学习这三个概念&#xff0c;但是对于三者的区别一直很模糊。 AI&…

聊聊 IP 地址和端口号的区别

在计算机网络中&#xff0c;两个基本概念对于理解设备如何通过网络进行通信至关重要。IP 地址和端口号是 TCP/IP 的典型特征&#xff0c;其定义如下&#xff1a;IP 地址是分配给连接到网络的每台机器的唯一地址&#xff0c;用于定位机器并与其通信。相反&#xff0c;端口号用于…

AnythingLLM打造私有知识库

一、 OllamaDeepSeek安装 https://blog.csdn.net/Stestack/article/details/145405151?spm1001.2014.3001.5502二、 nomic-embed-text nomic-embed-text主要用于文本嵌入和句子相似度任务&#xff0c;能够将这些任务应用于分类、聚类、检索等多种自然语言处理场景。该模型在…

C++ 11原子变量

原子变量 原子变量的解释原子变量类 atomic禁止拷贝赋值和读取操作通过函数特化类型 使用初始化赋值读取操作对象&#xff08;指针访问&#xff09; 使用原子变量解决乱序问题内存循序约束 原子变量的解释 原子作为长期最小的单位&#xff0c;在这里被定义为不可分割的最小操作…