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 后续专题链表、二叉树、动态规划等

相关新闻

C++面向对象编程核心:类与对象的封装、构造与内存管理详解

C++面向对象编程核心:类与对象的封装、构造与内存管理详解

1. 项目概述:为什么C的类和对象是基石? 如果你刚开始接触C,或者从C语言转过来,可能会觉得“类”和“对象”这两个词既熟悉又陌生。熟悉是因为到处都在提“面向对象编程”,陌生是因为它和之前写C语言时那种“函数结构体…

2026/7/30 3:55:33阅读更多 →
Spring Boot用户状态检测系统:睡眠状态识别与智能提醒实战

Spring Boot用户状态检测系统:睡眠状态识别与智能提醒实战

最近在开发一个智能提醒系统时,遇到了一个有趣的技术需求:如何准确识别用户状态并触发相应的提醒逻辑。特别是在睡眠状态检测这个场景下,传统的方案往往依赖硬件传感器或复杂的生物特征分析,但在某些轻量级应用中,我们…

2026/7/30 3:55:33阅读更多 →
Java中文乱码全解析:从字符编码原理到实战解决方案

Java中文乱码全解析:从字符编码原理到实战解决方案

1. 从“锟斤拷”说起:为什么中文乱码是Java开发者的必修课如果你在Java开发中没见过“锟斤拷”或者“烫烫烫”,那你的职业生涯可能还不够完整。这当然是个玩笑,但背后反映的是一个严肃且普遍的问题:中文乱码。它就像一个幽灵&…

2026/7/30 3:55:32阅读更多 →
英雄联盟Akari助手:5分钟学会的智能游戏效率工具

英雄联盟Akari助手:5分钟学会的智能游戏效率工具

英雄联盟Akari助手:5分钟学会的智能游戏效率工具 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄联盟中繁琐的符文配置、…

2026/7/30 5:05:48阅读更多 →
矿区没网、油田没信号?企业内部通讯怎么解决

矿区没网、油田没信号?企业内部通讯怎么解决

“以前给站里报数据,得开车跑20公里‘追信号’,着急时就爬上车顶,举着手机找信号。” 说这话的是新疆油田石西作业区的巡检操作工詹强。今年7月,这条全长230公里的油区公路终于通上了5G,使用了26座新建及改造的基站&am…

2026/7/30 5:05:48阅读更多 →
【单片机课程设计/毕业设计】基于单片机的室内温湿度自动管控系统开发,基于 DHT11 传感器的温湿度智能控制系统实现(010501)

【单片机课程设计/毕业设计】基于单片机的室内温湿度自动管控系统开发,基于 DHT11 传感器的温湿度智能控制系统实现(010501)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/30 5:05:48阅读更多 →
海外社媒内容排期完全指南:从入门到精通,看这一篇就够了

海外社媒内容排期完全指南:从入门到精通,看这一篇就够了

海外社媒内容排期完全指南:从入门到精通,看这一篇就够了你的Twitter账号日更30天,为什么还是没人互动?因为你缺的不是内容,是排期逻辑。本文适合:负责海外社媒运营的项目运营人员准备启动Twitter、Telegram…

2026/7/30 5:05:48阅读更多 →
RAG技术实战:从零搭建企业级智能问答系统

RAG技术实战:从零搭建企业级智能问答系统

这类 RAG 教程最怕的就是一上来就堆砌概念,把简单的事情讲复杂。其实 RAG 的核心就一句话:让大模型能“翻阅”你自己的资料来回答问题,而不是只靠它训练时学过的知识。如果你手头有私有文档、公司资料或者特定领域的知识,想快速让…

2026/7/30 5:05:48阅读更多 →
Java实体与JSON转换实战:从Jackson选型到性能优化全解析

Java实体与JSON转换实战:从Jackson选型到性能优化全解析

1. 项目概述:为什么我们需要关注实体与JSON的转换?在Java开发的世界里,尤其是在Web服务、微服务架构和前后端分离成为主流的今天,实体(Entity)与JSON(JavaScript Object Notation)之…

2026/7/30 5:03:48阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/29 9:47:45阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/29 7:00:19阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/29 7:58:51阅读更多 →
3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 🚀 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 你是否曾经因为iOS系统的严格…

2026/7/30 0:00:58阅读更多 →
[GESP202606 四级] 扫雷

[GESP202606 四级] 扫雷

B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…

2026/7/30 0:00:58阅读更多 →
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/30 0:27:26阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/30 4:47:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/29 14:26:42阅读更多 →