- 博客(10)
- 收藏
- 关注
原创 Java 集合体系详解(算法刷题专用)
LeetCode 例题:3. 无重复字符最长子串、128. 最长连续序列。:支持头尾增删,既可以当队列(先进先出),也可模拟栈(先进后出)自动装箱特性:写入基础类型数据时,底层自动转为包装类,无需手动转换。:TopK 问题、不断获取一组数字的最大 / 最小值。:存储不定长度结果集、保存输出答案、遍历数组。:需要快速获取最大 / 最小值、区间检索。:BFS 广度优先搜索、滑动窗口、栈模拟。:元素不重复,集合内元素自动升序排序。:需要基于 key 有序查找、区间处理。:数据映射、分组统计、记录数值下标。
2026-07-30 16:59:39
193
原创 LeetCode 3.无重复字符的最长子串(滑动窗口+HashSet)
支持自动装箱、自动拆箱,无需手动转换。:返回两个数字中较大的值,用于更新最长长度。,时间复杂度 \(O(n)\)。最终返回 ans = 3。核心规则:Java 中。
2026-07-30 16:43:13
335
原创 LeetCode 42.接雨水 (左右对撞双指针)
LeetCode 11【盛最多水的容器】 VS LeetCode 42【接雨水】11 题:求两根柱子之间形成的矩形面积,整体区间蓄水;42 题:逐根竖柱单独计算垂直方向雨水,每个位置受左右最高柱子限制,两道题模型完全不同,不要混用思路。
2026-07-28 21:48:07
315
原创 LeetCode 15. 三数之和(固定 i + 左右对撞双指针)
Arrays.asList () Java 内置静态方法,快速将多个数值封装为一个 List 集合;5. 暴力三重循环缺陷 O (n³) 时间复杂度,大数据用例超时;并且无法天然去重,产生重复三元组,不推荐。continue 关键字 直接结束本轮循环,进入下一轮循环,本题用来跳过重复 i 值。4. 去重执行顺序不能颠倒 找到 sum==0 时,left:左指针,从 i+1 开始向右搜寻;right:右指针,从数组末尾向左搜寻;初始状态:res = [],n = 6。i:外层循环,固定三元组第一个元素;
2026-07-27 22:09:28
332
原创 LeetCode 11.盛最多水的容器(左右对撞双指针)
两种双指针区分 左右对撞双指针:left 从头、right 从尾,向中间靠拢(本题、两数之和 II);快慢同向双指针:left、right 同时从起点向右遍历(283 移动零)。初始状态:left = 0,right = 8,maxArea = 0。循环结束,left == right,最终最大面积:49。,时间复杂度 O (n)
2026-07-26 22:42:41
235
原创 LeetCode 283.移动零(快慢同向双指针)
结论:left 与 right 重合时会发生自身交换,不会改变数组,逻辑正确,只是无效运算。void 方法特点 不需要 return 返回数值,数组为引用类型,方法内直接修改原数组。left、right 双指针作用区分。初始状态:left = 0。初始状态:left = 0。快慢双指针原地操作数组。
2026-07-25 22:52:29
226
原创 LeetCode 128.最长连续序列(HashSet)
是外层循环固定起点,数值不会变化,条件永久成立,死循环超时。含义:依次取出容器内每一个元素赋值给临时变量。⚠️ HashSet 没有下标,不能使用。遍历,只能用增强 for / 迭代器。,优先使用 HashSet 哈希方案。,集合为空,循环不会执行,直接返回。解法复杂度 O (n logn),实现 O (n) 时间复杂度。
2026-07-24 21:43:48
208
原创 LeetCode 49.字母异位词分组 (HashMap + 字符串排序)
Map<K, V>K = Key(键):用来查找的标识V = Value(值):你想要保存的数据判断规则:你打算拿什么东西当「查找标签」,K 就设为什么类型;你最终需要取出什么数据,V 就设为什么类型。举例对照两道题: 1)两数之和:用数字找下标 →2)字母异位词分组:用排序后的字符串找一组单词 →。
2026-07-23 22:47:23
175
原创 LeetCode第一题 两数之和
很久没用过java了,今天用Java完成了第一题,也出现了一些原则书写问题,在此记录一下源码:i++) {j < len;j++) {
2026-07-21 22:54:13
238
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅