LeetCode 热题 HOT100(二):双指针进阶与滑动窗口(Go 实现)
个人主页会编程的土豆欢迎来访作者简介后端学习者❄️个人专栏数据结构与算法数据库leetcode✨那些你一个人走过的夜路终将化作照亮未来的光本文覆盖力扣「热题 100」学习计划第 610 题全部使用Go实现。可与上一篇哈希表与双指针入门对照阅读。题单入口LeetCode 热题 10015. 三数之和难度中等标签数组、双指针、排序题目链接15. 三数之和题目描述给你一个整数数组nums判断是否存在三元组[nums[i], nums[j], nums[k]]满足i ! j、i ! k且j ! k并且nums[i] nums[j] nums[k] 0。请你返回所有和为0且不重复的三元组。示例输入nums [-1,0,1,2,-1,-4] 输出[[-1,-1,2],[-1,0,1]]思路分析先排序方便去重和双指针移动枚举第一个数nums[i]在右侧用双指针找两数之和等于-nums[i]遇到相同元素跳过避免重复三元组注意若nums[i] 0后面全为正可直接结束。Go 代码func threeSum(nums []int) [][]int { sort.Ints(nums) n : len(nums) res : make([][]int, 0) for i : 0; i n-2; i { if nums[i] 0 { break } if i 0 nums[i] nums[i-1] { continue } left, right : i1, n-1 for left right { sum : nums[i] nums[left] nums[right] if sum 0 { res append(res, []int{nums[i], nums[left], nums[right]}) for left right nums[left] nums[left1] { left } for left right nums[right] nums[right-1] { right-- } left right-- } else if sum 0 { left } else { right-- } } } return res }记得导入import sort复杂度时间复杂度O(n²)空间复杂度O(1)不计返回结果42. 接雨水难度困难标签栈、数组、双指针、动态规划、单调栈题目链接42. 接雨水题目描述给定n个非负整数表示每个宽度为 1 的柱子的高度图计算按此排列的柱子下雨之后能接多少雨水。示例输入height [0,1,0,2,1,0,1,3,2,1,2,1] 输出6思路分析双指针写法维护leftMax/rightMax当前位置左侧/右侧的最高柱哪边最大值更小就先结算哪边当前能接的水 该侧最大值 - 当前高度指针向中间移动直到相遇理解水位由「较矮一侧的最高柱」决定。Go 代码func trap(height []int) int { left, right : 0, len(height)-1 leftMax, rightMax : 0, 0 water : 0 for left right { if height[left] height[right] { if height[left] leftMax { leftMax height[left] } else { water leftMax - height[left] } left } else { if height[right] rightMax { rightMax height[right] } else { water rightMax - height[right] } right-- } } return water }复杂度时间复杂度O(n)空间复杂度O(1)3. 无重复字符的最长子串难度中等标签哈希表、字符串、滑动窗口题目链接3. 无重复字符的最长子串题目描述给定一个字符串s请你找出其中不含有重复字符的最长子串的长度。示例输入: s abcabcbb 输出: 3 解释: 因为无重复字符的最长子串是 abc所以其长度为 3。思路分析经典滑动窗口右指针不断扩展窗口用哈希表记录字符最后出现下标若右端字符已在窗口内出现左指针跳到该字符上次位置的下一位每步更新最大长度Go 代码func lengthOfLongestSubstring(s string) int { lastIndex : make(map[byte]int) left : 0 maxLen : 0 for right : 0; right len(s); right { ch : s[right] if idx, ok : lastIndex[ch]; ok idx left { left idx 1 } lastIndex[ch] right if right-left1 maxLen { maxLen right - left 1 } } return maxLen }复杂度时间复杂度O(n)空间复杂度O(|Σ|)字符集大小438. 找到字符串中所有字母异位词难度中等标签哈希表、字符串、滑动窗口题目链接438. 找到字符串中所有字母异位词题目描述给定两个字符串s和p找到s中所有p的异位词的子串返回这些子串的起始索引。不考虑答案输出的顺序。示例输入: s cbaebabacd, p abc 输出: [0,6] 解释: 起始索引等于 0 的子串是 cba, 它是 abc 的异位词。 起始索引等于 6 的子串是 bac, 它是 abc 的异位词。思路分析固定长度滑动窗口统计p的字符频次need维护窗口内字符频次window以及「已匹配字符种类数」valid窗口长度等于len(p)时判断是否完全匹配再右移时弹出左端字符字母表只有 26 个小写字母也可用[26]int数组比较。Go 代码func findAnagrams(s string, p string) []int { if len(s) len(p) { return nil } var need, window [26]int for i : 0; i len(p); i { need[p[i]-a] } res : make([]int, 0) left : 0 for right : 0; right len(s); right { window[s[right]-a] if right-left1 len(p) { window[s[left]-a]-- left } if right-left1 len(p) window need { res append(res, left) } } return res }复杂度时间复杂度O(n)n 为s长度空间复杂度O(1)560. 和为 K 的子数组难度中等标签数组、哈希表、前缀和题目链接560. 和为 K 的子数组题目描述给你一个整数数组nums和一个整数k请你统计并返回该数组中和为k的子数组的个数。子数组是数组中元素的连续非空序列。示例输入nums [1,1,1], k 2 输出2思路分析前缀和 哈希表记pre[i]为前i个数之和若存在j使得pre[i] - pre[j] k则(j, i]这一段和为k用哈希表记录「前缀和出现次数」遍历时先查pre - k的次数再把当前pre计入表注意初始要放入0:1表示前缀和为 0 出现过一次空前缀。Go 代码func subarraySum(nums []int, k int) int { count : make(map[int]int) count[0] 1 pre, ans : 0, 0 for _, num : range nums { pre num ans count[pre-k] count[pre] } return ans }复杂度时间复杂度O(n)空间复杂度O(n)小结题目核心技巧时间复杂度三数之和排序 双指针去重O(n²)接雨水左右双指针 左右最高柱O(n)无重复字符的最长子串滑动窗口 哈希表O(n)找到所有字母异位词定长滑动窗口 频次数组O(n)和为 K 的子数组前缀和 哈希表O(n)两篇合集对照序号题目篇目1两数之和第一篇2字母异位词分组第一篇3最长连续序列第一篇4移动零第一篇5盛最多水的容器第一篇6三数之和本文7接雨水本文8无重复字符的最长子串本文9找到所有字母异位词本文10和为 K 的子数组本文到这里Hot100 前 10 题的 Go 题解就齐了。建议每题自己敲一遍再对照思路巩固。如果对你有帮助欢迎点赞收藏后面可以继续写 Hot100 后续专题链表、二叉树、动态规划等

相关新闻

申报高新技术企业有什么硬性要求吗?刚成立一年可不可以报?

申报高新技术企业有什么硬性要求吗?刚成立一年可不可以报?

一、核心硬性条件(一票否决项)只有全部满足以下8项,才能通过初审:1.主体资格:企业注册成立必须满1年以上(即365个日历天数)。若刚满一年但不满365天,无法申报。2.知识产权&#xff1…

2026/10/12 20:32:41 阅读更多 →
DC-1靶机渗透测试实战:从信息收集到权限提升的完整攻击链解析

DC-1靶机渗透测试实战:从信息收集到权限提升的完整攻击链解析

1. 从零开始:为什么选择DC-1作为渗透测试的“第一课”?如果你刚接触网络安全,或者想找一个能串联起Web渗透基础知识的实战环境,DC-1靶机绝对是一个绕不开的经典选择。它不是最复杂的,但却是最“教科书式”的。我第一次…

2026/10/11 3:18:41 阅读更多 →
Vue+SpringBoot项目部署实战:宝塔面板一键部署与生产环境配置

Vue+SpringBoot项目部署实战:宝塔面板一键部署与生产环境配置

1. 项目概述与核心价值最近在社区里看到不少朋友在问,怎么把一个前后端分离的项目,从本地开发环境搬到线上服务器,让它真正跑起来。特别是用 Vue 做前端,Spring Boot 做后端,再用上 MySQL 和 Redis 这种经典技术栈的项…

2026/10/12 11:01:54 阅读更多 →

最新新闻

Windows 上从零安装配置 Claude Code 完整指南:Node.js、终端与 VS Code 集成

Windows 上从零安装配置 Claude Code 完整指南:Node.js、终端与 VS Code 集成

1. 为什么 Windows 上跑 Claude Code 值得单独写一篇在 Mac 和 Linux 上装 Claude Code,基本就是一行命令的事。但到了 Windows,情况立刻变得复杂起来:终端环境有 CMD、PowerShell、Windows Terminal、Git Bash 好几套,Node.js 的…

2026/10/13 15:33:17 阅读更多 →
基于SpringBoot的社区旧衣物回收与捐赠系统设计与实现

基于SpringBoot的社区旧衣物回收与捐赠系统设计与实现

1. 为什么"旧衣物回收"值得做成一个完整的系统 先聊点实际背景。这几年小区的旧衣物回收箱越来越常见,但很多人也发现了问题:箱子满了没人及时清运、衣物到底去了哪里、捐赠是否真正送达、居民参与后没有任何反馈。社区、物业、公益组织三方各…

2026/10/13 15:33:17 阅读更多 →
showboat 执行层设计揭秘:为什么非零退出码不算错误——os/exec 与退出码处理细节

showboat 执行层设计揭秘:为什么非零退出码不算错误——os/exec 与退出码处理细节

【免费下载链接】showboat Create executable documents that demonstrate an agents work 项目地址: https://gitcode.com/gh_mirrors/sh/showboat 点击查看 免费下载 showboat 是一个用 Go 编写的开源工具,帮助 AI Agent 生成可执行演示文档——把注释…

2026/10/13 15:33:17 阅读更多 →
广东省30米DEM高程数据全流程实战:从下载到地形分析

广东省30米DEM高程数据全流程实战:从下载到地形分析

简介:这份广东省30米分辨率DEM高程数据面向GIS从业者、地理科研人员及规划决策者,用于地形分析、坡度坡向计算、排水方向模拟与自然灾害风险评估等场景。数据以Shapefile矢量格式组织,同时附带GeoTIFF栅格文件,可在ArcGIS、QGIS等…

2026/10/13 15:33:17 阅读更多 →
强化学习速查表深度解析:从 Bellman 方程到蒙特卡洛与时序差分算法

强化学习速查表深度解析:从 Bellman 方程到蒙特卡洛与时序差分算法

示例工程 【免费下载链接】deep-reinforcement-learning Repo for the Deep Reinforcement Learning Nanodegree program 项目地址: https://gitcode.com/gh_mirrors/dee/deep-reinforcement-learning 点击查看 免费下载 这份速查表(Cheatsheet&#xf…

2026/10/13 15:33:16 阅读更多 →
黑胶唱片旋转效果:用requestAnimationFrame实现高精度匀速转动

黑胶唱片旋转效果:用requestAnimationFrame实现高精度匀速转动

1. 项目概述:用代码“转”出一张会呼吸的黑胶唱片你有没有盯着老式唱机上那张缓缓旋转的黑胶唱片发过呆?不是为了听歌,而是被那种沉稳、连续、带着轻微震颤的物理转动本身吸引——指针划过沟槽的微响、唱片边缘泛起的柔光、转盘轴承里藏着的精…

2026/10/13 15:32:14 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →