【算法专题训练】09、累加子数组之和

1、题目:LCR 010. 和为 K 的子数组

  • https://leetcode.cn/problems/QTMn0o/description/
给定一个整数数组和一个整数 k ,请找到该数组中和为 k 的连续子数组的个数。示例 1:
输入:nums = [1,1,1], k = 2
输出: 2
解释: 此题 [1,1][1,1] 为两种不同的情况示例 2:
输入:nums = [1,2,3], k = 3
输出: 2

审题:

  • 输入一个整数数组和一个整数值k,要求从整数数组中找出存在的子数组个数,要求子数组的和等于k

2、暴力解法

  • 双层for循环,外层for循环定位子数组的开始位置,内层for循环定义子数组的结束位置,
  • 在内层for循环中,将子数组所有的元素相加,判断结果累加结果sum是否等于目标值k,如果等于则找到符合要求的子数组,符合子数组个数结果值+1

代码实现

int subarraySum(vector<int> &nums, int k)
{int res = 0;int size = nums.size();int sum = 0;for (int i = 0; i < size; i++){sum = 0;for (int j = i; j < size; j++){sum += nums[j];if (k == sum){res++;}}}return res;
}

3、数组累加法

  • 将数组中所有元素的值累加起来,使用哈希表保存子数组累加和出现的次数,判断子数组的累加和是否等于目标值k
  • 中间子数组的累加和,可以通过整个范围的子数组累加和,减去前面部分子数组的累加和。
  • 例子:
有数组 {123456} 加入要求子数组和为9的子数组出现的个数
可以通过累加计算得到前三个数组元素的累加和 S3 = 1+2+3 = 65个数组元素累加和为 S5 = 1+2+3+4+5 = 15;
那子数组累加和为9的子数组 = S5 - S3;
可通过计算累加相减是否等于目标值来求符合条件的子数组

代码实现

int subarraySum(vector<int> &nums, int k)
{int res = 0;std::map<int, int> sumCountMap;// 往map中插入元素sumCountMap[0] = 1;int sum = 0;for (int i = 0; i < nums.size(); i++){sum += nums[i];// 判断是否存在 sum-k的key值if (sumCountMap.find(sum - k) != sumCountMap.end()){res += sumCountMap.at(sum - k);}// 在往map中插入累加值int count = 0;if (sumCountMap.find(sum) != sumCountMap.end()){count = sumCountMap.at(sum);}sumCountMap[sum] = count + 1;}return res;
}

4、总结

  • 求子数组的累加和等于某个目标值,如果数组元素全是正整数,可以使用双指针解法,但数组元素只是整数,那就会存在正整数与负整数,使用双指针累加法就覆盖不到所有结果。
  • 暴力解法使用双层for循环,可以检索所有的子数组情况,但时间复杂度为n的平方
  • 采用数组累加求和方式,可通过子数组累加和相减得到某段区域的子数组累加和。使用哈希表保存子数组累加和出现的次数
  • map数据结构使用,使用find方法查询key值是否存在,at方法获取value值,还可以使用赋值语句[]获取value值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/92270.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92270.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WinXP配置一键还原的方法

使用系统自带的系统还原功能&#xff1a;启用系统还原&#xff1a;右键点击 “我的电脑”&#xff0c;选择 “属性”&#xff0c;切换到 “系统还原” 选项卡&#xff0c;确保 “在所有驱动器上关闭系统还原” 未被勾选&#xff0c;并为系统驱动器&#xff08;C:&#xff09;设…

基于模式识别的订单簿大单自动化处理系统

一、系统概述 在金融交易领域&#xff0c;订单簿承载着海量的交易信息&#xff0c;其中大单的处理对于市场流动性和价格稳定性有着关键影响。基于模式识别的订单簿大单自动化处理系统旨在通过智能算法&#xff0c;精准识别订单簿中的大单特征&#xff0c;并实现自动化的高效处理…

table行内--图片预览--image

需求&#xff1a;点击预览&#xff0c;进行预览。支持多张图切换思路&#xff1a;使用插槽&#xff1b;src : 展示第一张图&#xff1b;添加preview-src-list ,用于点击预览。使用插槽&#xff08;UI组件--> avue&#xff09;column: 测试数据

560. 和为 K 的子数组 - 前缀和思想

560. 和为 K 的子数组 - 前缀和思想 在算法题中&#xff0c;前缀和是一种能快速计算 “数组中某段连续元素之和” 的预处理方法&#xff0c;核心思路是 “提前计算并存储中间结果&#xff0c;避免重复计算” 前缀和的定义&#xff1a; 对于一个数组 nums&#xff0c;我们可以创…

Python金融分析:从基础到量化交易的完整指南

Python金融分析:从基础到量化交易的完整指南 引言:Python在金融领域的核心地位 在量化投资规模突破5万亿美元的2025年,Python已成为金融分析的核心工具: 数据处理效率:Pandas处理百万行金融数据仅需2.3秒 策略回测速度:Backtrader框架使策略验证效率提升17倍 风险评估精…

MySQL 从入门到实战:全方位指南(附 Java 操作示例)

MySQL 入门全方位指南&#xff08;附Java操作示例&#xff09; MySQL 作为最流行的关系型数据库之一&#xff0c;广泛应用于各类应用开发中。本文将从安装开始&#xff0c;逐步讲解 MySQL 的核心知识点与操作技巧&#xff0c;并通过 Java 示例展示客户端交互&#xff0c;帮助你…

从低空感知迈向智能协同网络:构建智能空域的“视频基础设施”

✳️ 引言&#xff1a;低空经济起飞&#xff0c;智能视觉链路成刚需基建 随着政策逐步开放与技术加速成熟&#xff0c;低空经济正从概念走向全面起飞。从载人 eVTOL 到物流无人机&#xff0c;从空中巡检机器人到城市立体交通调度平台&#xff0c;低空场景正在成为继地面交通和…

Node.js- express的基本使用

Express 核心概念​ Express是基于Node.js的轻量级Web框架&#xff0c;封装了HTTP服务、路由管理、中间件等核心功能&#xff0c;简化了Web应用和API开发 核心优势​​ 中间件架构&#xff1a;支持模块化请求处理流程路由系统&#xff1a;直观的URL到处理函数的映射高性能&…

计算机网络:网络号和网络地址的区别

在计算机网络中&#xff0c;“网络号”和“网络地址”是两个密切相关但含义不同的概念&#xff0c;主要用于IP地址的划分和网络标识。以下从定义、作用、关联与区别等方面详细说明&#xff1a; 1. 网络号&#xff08;Network Number&#xff09;定义&#xff1a;网络号是IP地址…

【iOS】3GShare仿写

【iOS】3GShare仿写 文章目录【iOS】3GShare仿写登陆注册界面主页搜索文章活动我的总结登陆注册界面 这个界面的ui东西不多&#xff0c;主要就是几个输入框及对输入内容的一些判断 登陆界面 //这里设置了一个初始密码并储存到NSUserDefaults中 NSUserDefaults *defaults [N…

从案例学习cuda编程——线程模型和显存模型

1. cuda介绍CUDA&#xff08;Compute Unified Device Architecture&#xff0c;统一计算设备架构&#xff09;是NVIDIA推出的一种并行计算平台和编程模型。它允许开发者利用NVIDIA GPU的强大计算能力来加速计算密集型任务。CUDA通过提供一套专门的API和编程接口&#xff0c;使得…

进阶向:YOLOv11模型轻量化

YOLOv11模型轻量化详解:从理论到实践 引言 YOLO(You Only Look Once)系列模型因其高效的实时检测能力而广受欢迎。YOLOv11作为该系列的最新演进版本,在精度和速度上均有显著提升。然而,原始模型对计算资源的需求较高,难以在边缘设备或移动端部署。轻量化技术通过减少模…

2025-08 安卓开发面试拷打记录(面试题)

想跑路了&#xff0c;开始学八股&#xff0c;几个主动找的大厂试了下水&#xff0c;后续看情况更新。楼主一年经验&#xff0c;学的c被骗来干安卓&#xff0c;双非本科。2025-07-31 小鹏汇天 安卓开发一面synchronizedhandler视图刷新binderjvm垃圾回收内存泄漏排查glide缓…

风丘助力混合动力汽车工况测试:精准采集整车信号解决方案

一、背景 混合动力汽车是介于纯电动汽车与燃油汽车两者之间的一种新能源汽车。它既包含纯电动汽车无污染、启动快的优势&#xff0c;又拥有燃油车续航便捷、不受电池容量限制的特点。在当前环境下&#xff0c;混合动力汽车比纯电动汽车更符合目前的市场需求。 然而&#xff…

​​MCU程序的存储方式与存储区域大小要求​

程序的段的存储方式与存储区域大小要求 程序的存储和运行涉及 ROM&#xff08;Flash/非易失性存储器&#xff09; 和 RAM&#xff08;易失性存储器&#xff09; 的分配&#xff0c;不同段在存储和运行时具有不同的特性。以下是详细的分类和计算方式&#xff1a;1. 程序文件的存…

Lesson 31 Success story

Lesson 31 Success story 词汇 retire v.退休,退役[运动]去睡觉 构成:re-表示重复 tire v.感到累一tried a.累的 tyre n.轮胎 用法:retire from 单位 从…退休(过去时) 例句:他从学校退休了。 He retired from our school. retire例句: 1.他越来越老了&#xff0c;他即將退休。…

2025年8月4日私鱼创作平台v1.0.4公测版更新发布-完成大部分功能包含关注创作者以及发布作品及合集功能优雅草科技

2025年8月4日私鱼创作平台v1.0.4公测版更新发布-完成大部分功能包含关注创作者以及发布作品及合集功能优雅草科技 鲸鱼小说分销系统介绍 优雅草私鱼创作系统——产品介绍 系统概述 优雅草私鱼创作系统&#xff08;简称“私鱼”&#xff09;是一款专注于私域流量运营的垂直化…

鹧鸪云:光伏电站的“智慧中枢”,精准调控逆变器

光伏电站如星辰散落于大地&#xff0c;那些默默工作的逆变器便是每一处光芒的关键心脏。然而&#xff0c;分布广袤、设备众多&#xff0c;传统运维如盲人摸象&#xff0c;效率低下&#xff0c;故障难寻&#xff0c;白白流失宝贵电能。鹧鸪云光伏运维软件应时而生&#xff0c;它…

java中Reflection反射(一)

目录 一、概述 二、class类&#xff1a; 1、获取类的字节码文件&#xff1a; &#xff08;1&#xff09;方式一&#xff1a;直接通过一个class的静态变量class获取 &#xff08;2&#xff09;方式二&#xff1a;如果知道一个class的完整类名&#xff0c;可以通过静态方法Cl…

CVE-2021-1879

一、漏洞原理 CVE-2021-1879 是 IBM WebSphere Application Server 中存在的一个 路径遍历&#xff08;Path Traversal&#xff09; 漏洞&#xff0c;其核心原理为&#xff1a; ①WebSphere 在处理某些文件操作请求&#xff08;如下载、上传或配置文件读取&#xff09;时&#…