- 博客(38)
- 收藏
- 关注
原创 LeetCode-寻找环形链表的入口
val = x;* }* }*/a:链表头节点 → 环入口节点的距离;b:环入口节点 → 快慢指针相遇点的距离;c:相遇点 → 环入口节点的距离;L:环的总长度,L = b + c;n:快指针在环内绕的圈数(n ≥ 1)。
2026-03-06 16:48:55
240
原创 力扣Hoot100-相交链表
本题是链表类高频面试题,核心考察与思想。常规解法需要借助哈希表存储节点,占用额外空间;而本文分享的,能在内找到相交节点,是面试标准答案。
2026-03-05 13:52:29
63
原创 ;力扣Hoot100-旋转图像
在二维矩阵类算法题中,是一道经典的「原地操作」题目,核心要求是将n x n的二维矩阵,且必须在原矩阵上完成操作(空间复杂度 O (1))。这道题的难点在于如何精准定位旋转后元素的对应位置,避免使用额外数组。你写的代码采用了「分层边界交换法」,是本题最直观、最易理解的原地最优解,通过分层收缩边界,循环交换每层的四个对应位置元素,完美实现旋转。
2026-03-04 15:23:58
376
原创 力扣Hoot100-搜索二维矩阵
在二维矩阵类算法题中,是一道经典的「有序矩阵查找」题目,核心特点是矩阵满足「每行元素从左到右升序排列,每列元素从上到下升序排列」。这道题的难点在于如何利用矩阵的有序性,避开暴力遍历的低效解法。你写的代码采用了「右上角起点法(削行削列法)」,是本题最直观、效率最优的解法,通过从矩阵右上角开始比较,逐步缩小查找范围,时间复杂度仅为 O (m+n)。
2026-03-04 15:22:03
372
原创 力扣Hoot100-螺旋矩阵:边界收缩法实现顺时针遍历
left:当前遍历区域的左边界(列的起始索引),初始值为 0;right:当前遍历区域的右边界(列的结束索引,开区间),初始值为;top:当前遍历区域的上边界(行的起始索引),初始值为 0;bottom:当前遍历区域的下边界(行的结束索引,开区间),初始值为。
2026-03-03 15:28:18
288
原创 力扣Hoot100-矩阵置零
在二维数组(矩阵)类算法题中,是一道经典的「空间优化」题目,核心难点在于要求—— 即不能额外开辟与矩阵行列数相当的数组来记录需要置零的行和列。这道题我最初尝试过「额外数组标记」的基础思路,但不符合空间优化要求,后来吃透了「利用矩阵自身第一行 / 第一列做标记」的核心逻辑,最终写出了优化后的代码(包含关键修复点),完美实现 O (1) 空间复杂度。
2026-03-03 10:32:59
1264
原创 力扣Hoot100-轮转数组
在数组类算法题中,是一道经典的「原地操作」题目,也是面试中考察「空间优化」和「数组反转技巧」的高频题。这道题我一开始尝试过「暴力逐次右移」「额外数组存储」等思路,但要么超时、要么不满足「原地操作」要求,直到吃透「三次反转法」的核心逻辑,才写出了和你一样的最优解 —— 仅用双指针反转,做到 O (n) 时间复杂度 + O (1) 空间复杂度,完美符合题目要求。这篇博客会完整还原解题思路:从「踩坑的暴力解法」到「三次反转最优解」,把每一步的逻辑、反转原理、代码细节讲透,让你不仅会写代码,更懂背后的核心思想。
2026-03-02 15:32:03
330
原创 力扣Hoot100-除自身以外数组的乘积
前缀乘积:对于位置i前缀乘积是i左边所有元素的乘积);后缀乘积:对于位置i后缀乘积是i右边所有元素的乘积);最终结果answer[i] = 前缀乘积 × 后缀乘积(左边所有数的积 × 右边所有数的积 = 除自身外所有数的积)。
2026-03-02 15:28:48
1004
原创 力扣Hoot100-最大子数组和
定义dp[i]:以nums[i]为最后一个元素的连续子数组的最大和。关键点:必须以nums[i]结尾!这是 DP 能递推的核心(保证子数组连续)。比如dp[0] = -2(只有第一个元素);(以 1 结尾的子数组:[1] 或 [-2,1],取大的 1);(以 - 3 结尾的子数组:[-3] 或 [1,-3],取大的 - 2);(以 4 结尾的子数组:[4] 或 [1,-3,4],取大的 4)。
2026-03-01 21:22:32
236
原创 力扣hoot100- 合并区间
大家好,今天分享一道面试算法题 —— 合并区间(LeetCode 56)。这道题是思想的经典应用,代码简洁、逻辑清晰,非常适合用来巩固区间类问题的解题思路。我会用最直白的方式,从思路到代码逐行讲透,新手也能轻松看懂~
2026-03-01 21:21:28
357
原创 力扣Hoot100-最小覆盖子串
给定两个字符串 s 和 t,返回 s 中包含 t 所有字符的最短子串(子串是连续的);如果 s 中不存在这样的子串,返回空字符串 ""。示例:输入:s = "ADOBECODEBANC", t = "ABC"输出:"BANC"解释:"BANC" 是包含 A、B、C 所有字符的最短子串,其他包含所有字符的子串(如 "ADOBEC")长度更长。核心难点:既要找到包含t所有字符的子串,又要保证子串最短,暴力枚举会超时,必须用更高效的算法。
2026-02-28 11:10:02
1041
原创 力扣Hoot100-长度最小的子数组
在 LeetCode 的数组类题目中,「长度最小的子数组」是一道典型的应用题。这道题看似简单,但暴力解法容易超时,而滑动窗口能将时间复杂度从 O (n²) 优化到 O (n),是必须掌握的核心技巧。今天我会结合你提供的最优解代码,从题目背景、暴力解法痛点、滑动窗口思路、代码逐行解析到执行演示,带你彻底吃透这道题。
2026-02-28 09:46:12
225
原创 力扣Hoot100-滑动窗口最大值
在刷 LeetCode 滑动窗口类题目时,绝对是绕不开的一道经典题。它不仅能考察我们对滑动窗口思想的理解,更能引出一个非常重要的数据结构 ——。今天,我就结合自己写的最优解代码,从暴力解法痛点、单调队列思路、代码逐行解析、执行过程演示四个方面,带你彻底吃透这道题。
2026-02-27 22:04:57
290
原创 力扣Hoot100-和为 K 的子数组
这段 Java 代码是解决「统计数组中所有和为 k 的连续子数组个数」的最优解法,核心思路是结合与,把原本暴力枚举的 O (n²) 时间复杂度优化到 O (n),我会从问题转化、代码逻辑、执行示例三个维度帮你彻底理解。
2026-02-26 16:01:56
277
原创 力扣Hot100-区域和检索 - 数组不可变
这段 Java 代码实现了一个NumArray类,核心功能是通过做预处理,实现对原数组任意闭区间内元素和的,相比每次查询都遍历区间求和(O (n)),大幅提升了查询效率。
2026-02-26 14:36:25
229
原创 力扣Hot100-找到字符串中所有字母异位词
给定两个字符串s和p,找到s中所有p的字母异位词的子串,返回这些子串的起始索引。字母异位词指字母相同,但排列不同的字符串,比如abc和bcacab都是彼此的字母异位词。示例:输入p = "abc",输出[0,6]。因为s中索引 0 开始的子串cba、索引 6 开始的子串bac都是abc的字母异位词。
2026-02-24 15:57:58
302
原创 力扣Hot100- 无重复字符的最长子串
这道题的两种解法,对应了算法学习中「从直观到优化」的典型思路:暴力解法是入门,它的价值在于「快速落地思路,验证正确性」,但我们不能停留在这一步——要学会分析其时间、空间复杂度的痛点,思考如何用更高效的技巧优化。滑动窗口之所以能成为最优解,核心是「用空间换时间」(用哈希表存储索引),避免了重复检查,将双重循环降为单次循环。除此之外,这道题还能延伸出更多优化方向:比如用数组替代哈希表(当字符集固定时,如 ASCII 128 个字符),进一步提升效率;或者用双指针 + 集合的方式,简化哈希表的操作。
2026-02-23 23:55:47
742
原创 力扣Hot100-DAY6-接雨水
最近刷到了经典的 “接雨水” 算法题,折腾了好一阵子终于把双指针解法吃透了,这篇博客就记录下我的思考过程,也希望能帮到和我一样的算法新手。
2026-02-08 22:21:54
584
原创 力扣Hot100-DAY5-15- 三数之和
在 LeetCode 的数组类题目中,是非常经典的一道题,核心要求是找出数组中所有和为 0 且不重复的三元组,这道题的难点不在于找到和为 0 的三元组,而在于和。暴力解法通过三层循环枚举所有三元组,时间复杂度达到O(n3),在数据量较大时会直接超时;而的解法能将时间复杂度优化到O(n2),是这道题的最优解,也是面试中常考的解法。
2026-02-06 14:12:25
424
原创 (万字解析!!!)苍穹外卖DAY9
接口设计:使用定义 POST 类型接口,路径中的{id}为历史订单 ID,通过注解绑定到方法参数;职责边界:控制器仅负责接收请求、调用业务层方法、返回统一结果(),不处理具体业务逻辑,符合 “控制层 + 业务层” 的分层设计原则。接口设计:使用定义 GET 类型接口,路径,参数会自动绑定前端传递的分页(page、pageSize)和搜索条件(如 orderNumber、phone、status 等),符合 RESTful 设计规范;接口设计使用定义 PUT 类型接口,路径/confirm。
2026-01-21 21:59:56
705
原创 力扣Hot100-DAY4-11- 盛最多水的容器
在数组类算法题中,是一道非常经典的必刷题,也是面试高频考点。;后来吃透了「左右双指针 + 贪心思想」的最优解法,才发现这道题的精髓所在。这篇博客就完整还原我的解题思路,从到,把两种解法的思路、代码、优缺点、核心原理全部讲透。
2026-01-10 21:57:55
772
原创 力扣Hot100-DAY4-283-移动零
这道题的最优解用到的是(快慢指针),两个指针都从数组的起始位置(索引 0)出发,向同一个方向遍历,这也是数组原地修改类题目最常用的解题技巧之一。
2026-01-10 21:32:31
281
原创 力扣Hot100-DAY3-128-最长连续序列
本题对应 LeetCode 128 题 最长连续序列,也是面试高频题,先明确题目要求:给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。设计并实现时间复杂度为 O (n) 的算法解决此问题。4解释:最长数字连续序列是,长度为 4。9。
2026-01-09 21:06:12
527
原创 力扣Hot100-DAY2-49-异位词分组
先明确题目要求(对应 LeetCode 49 题):给定一个字符串数组,将所有异位词组合在一起返回。异位词指的是由相同字符组成,但字符顺序不同的字符串(比如 "eat"、"tea"、"ate" 就是一组异位词)。
2026-01-08 21:15:38
347
原创 苍穹外卖DAY1
第二部,得到token,后面我就可以使用这个来避免每次都要输入密码的场景。第一步,一定要改url,这里默认的8080端口。输入后可以发现,我们已经成功导入了数据库。这里不采用视频中的方法,改用Mysql。在全局参数增加token,这样就完成了。第三步,打开右上角的三个横杠。尝试登录,返回正确。
2026-01-08 19:37:16
139
原创 力扣Hot100-DAY1
作为编程入门经典题目,两数之和我第一次上手时,毫不犹豫地用了双层 for 循环暴力求解,虽然最终实现了功能,但代码冗余、效率偏低。后来深入学习了哈希表,才发现这道题的最优解。
2026-01-01 23:37:11
309
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅