Leetcode hot100 和为K的子数组【中等】
法一暴力搜索既然是子数组那就是连续的直觉是用滑动窗口。很容易写出来一个这样的解法因为我们先入为主了以为K和数组里的数都是正数可能后面还有0啊还有[2,-2,2,-2]或者[3,-2,-1]这样的那也好办让滑动窗口的右边界一直搜到数组最后就好了嘛。但是这个题是中等难度你这么做看起来像简单程度的。时间复杂度O(n^2)空间复杂度O1法二前缀和哈希PS别看前面的推导了直接跳到下面那张图就明白了。法一其实是暴力搜索接下来相当于是暴力搜索的优化嘛暴力搜索优化的思路就是利用之前的信息。想到了之前的《两数之和》只不过现在用“和”去代替其中一个数。比如目前遍历到nums[i]nums[i]是“一个数”nums[i]前面的所有可能前缀和下标从0到i-1从1到i-1,从2到i-1...就是“另一个数”。用和两数之和完全一样的思路去写的话两数之和是把nums[i]之前的所有数都存起来对应的我们把nums[i]之前的所有前缀和都存起来。稍微写了一下代码没跑通int totalCount0; //key放前缀和value放个数。因为前缀和可能会重复呀PS其实必须要走一遍暴力搜索并且遇到“邪恶的用例”才能意识到前缀和可能会重复进而才能定义出这里的value所以你根本无法一上来就想到法二破题那就用value记录前缀和为key的个数。 HashMapInteger,Integer map new HashMap(); for(int i0; ilen; i){ if(map.contains(k-nums[i])){ totalCounttotalCountmap.get(k-nums[i]); //保持和两数之和一样的思路 } //更新前缀和map里的所有元素key都更新为keynums[i] //发现时间复杂度依然是O(n^2)。 //而且要借助一个临时HashMap不然没法进行自更新 HashMapInteger,Integer tempMap new HashMap(); Iterator it map.iterator(); while(it.hasNext()){ Map.EntityInteger,Integer entity it.next(); //如果已经有了value1 if(tempMap.contains(entity.getKey()nums[i])){ tempMap.put(entity.getKey()nums[i]),tempMap.getValue()1); //如果没有value等于原map里的value }else{ tempMap.put(entity.getKey()nums[i],entity.getValue()); } } maptempMap; }我们会发现时间复杂度依然是O(n^2)而且本质上其实跟暴力搜索是一样的。。。但是起码思路方向是对的所以还要继续变通————所以存储的信息不能是nums[i]的所有前缀和下标从0到i-1从1到i-1,从2到i-1...我们内循环是在更新数据对吧我们不想要这层内循环那也就说明我们存储的信息得是不用更新的。那就是存[0,0],[0,1],[0,2]...[0,i-1]这样的前缀和。那怎么得到nums[i]的一系列前缀和呢做减法呀用[0,i-1]的前缀和减去[0,j]的前缀和不就是(j,i-1]的前缀和嘛。---》这就是代码里精髓部分if(map.containsKey(nowPre-k))的推导于是你就要想到除了map之外去存前面的前缀和以外还需要一个变量去维护当前的前缀和从nums[0]到nums[i]。class Solution { public int subarraySum(int[] nums, int k) { int len nums.length; int totalCount0; HashMapInteger,Integer map new HashMap(); //小精髓——用(0,1)去初始化 map.put(0,1); int nowPre 0; for(int i0; ilen; i){ //先更新前缀和 nowPre nowPrenums[i]; //整个算法的精髓就在这里 if(map.containsKey(nowPre-k)){ totalCounttotalCountmap.get(nowPre-k); } //如果前缀和之前不曾存在那么新增一个value1如果存在,value1 if(map.containsKey(nowPre)) map.put(nowPre,map.get(nowPre)1); else map.put(nowPre,1); } return totalCount; } }

相关新闻

基于PCA9422与TM4C129的嵌入式电源管理实战解析

基于PCA9422与TM4C129的嵌入式电源管理实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 2:12:52 阅读更多 →
IBM Granite 4.2本地化部署全攻略:Ollama、Transformers与GGUF量化实践

IBM Granite 4.2本地化部署全攻略:Ollama、Transformers与GGUF量化实践

本地大模型这阵风,最近是越来越大了。过去两年,大多数人用大模型的方式是“调 API”:注册账号、申请 Key、按 Token 付费。这套模式成熟,但问题也明显——费用逐月走高、敏感数据要送出内网、网络一抖服务就跟着抖。于是越来越多团…

2026/10/10 2:12:52 阅读更多 →
Ridge与随机森林堆叠解决高维房价预测

Ridge与随机森林堆叠解决高维房价预测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 2:11:51 阅读更多 →

最新新闻

【BFS 解决拓扑排序】课程表

【BFS 解决拓扑排序】课程表

文章目录题目解析算法原理建图入度数组代码实现题目链接:207. 课程表 题目解析 拓扑排序(Topological sorting)要解决的问题是 如何给一个有向无环图的所有节点排序。 有向无环图 (Directed Acyclic Graph, 缩写 DAG&#xff09…

2026/10/10 2:58:07 阅读更多 →
MySQL中的常用SQL语句

MySQL中的常用SQL语句

SQL语句的分类DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter、rename、truncate。其中 create 用于创建数据库对象,drop 用于删…

2026/10/10 2:58:07 阅读更多 →
Python 高阶语法(二):上下文管理器、with、yield 与资源安全释放——从文件到 FastAPI 数据库会话

Python 高阶语法(二):上下文管理器、with、yield 与资源安全释放——从文件到 FastAPI 数据库会话

这一篇我们会学习另一个在后端中非常重要的能力:with __enter__ __exit__ contextmanager yield async with它们会解释为什么文件、数据库连接、HTTP 客户端、模型资源都需要被正确打开和关闭。一、前言在编程中,有很多资源不能只打开、不关闭。例如&…

2026/10/10 2:58:07 阅读更多 →
第16章-RAG

第16章-RAG

第 16 章:RAG 在模型回答前检索可信外部知识,把相关证据加入 Prompt,让回答更贴近私有数据并具备可追溯来源。 前言 模型参数中没有企业最新制度、内部文档和实时知识。RAG(Retrieval-Augmented Generation)不要求重新…

2026/10/10 2:58:07 阅读更多 →
终于有人把数据指标体系讲明白了:指标怎么定、怎么分、怎么用一次讲透

终于有人把数据指标体系讲明白了:指标怎么定、怎么分、怎么用一次讲透

很多企业做数据分析,做到最后都会遇到一个很奇怪的问题:报表越来越多,指标越来越多,但企业反而越来越说不清自己的经营状况。财务有一套收入,销售有一套收入,运营还有另一套收入;老板问一句“这…

2026/10/10 2:58:07 阅读更多 →
【会议征稿】第三届数字经济与计算机科学国际学术会议(DECS 2026)

【会议征稿】第三届数字经济与计算机科学国际学术会议(DECS 2026)

第三届数字经济与计算机科学国际学术会议 (DECS 2026) 2026 3rdInternational Conference on Digital Economy and Computer Science 会议官网: 第三届数字经济与计算机科学国际学术会议(DECS 2026)https://ais.cn/…

2026/10/10 2:57:07 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →