- 博客(13)
- 收藏
- 关注
原创 LeetCode——56. 合并区间(Java)
按照区间的起始位置对所有区间进行排序。如果起始位置相同,则按结束位置排序。排序后,重叠的区间会相邻,便于后续的合并操作。
2025-06-09 17:34:41
507
原创 LeetCode——42. 接雨水(Java)
双指针方法是一种解决接雨水问题的高效方法,通过维护两个指针和两个最大高度变量,可以在 O(n) 的时间复杂度内计算出能接的雨水量。这种方法的实现简单,易于理解,适用于大多数接雨水问题的场景。
2025-06-09 16:58:12
790
原创 LeetCode——239. 滑动窗口最大值(Java)
为了提高效率,可以使用单调队列(Deque)来实现 O(n) 的时间复杂度。单调队列可以确保队列头部始终是当前窗口的最大值,从而避免了每次重新计算最大值。
2025-06-09 16:13:38
527
原创 LeetCode——53. 最大子数组和(Java)
Kadane 算法是一种非常高效的解决方案,适用于求解最大子数组和问题。它通过动态规划的思想,逐步计算每个位置的最大子数组和,并在过程中更新全局的最大值。这种方法不仅时间复杂度低,而且空间复杂度也非常低,非常适合处理大规模数据。
2025-06-06 16:33:25
1541
原创 LeetCode——560. 和为 K 的子数组(Java)
暴力破解的核心思想是遍历数组的所有可能的子数组,并统计其中和为 k 的子数组的个数。
2025-06-06 15:43:35
215
原创 LeetCode——438. 找到字符串中所有字母异位词(Java)
如果两个字符串是异位词,那么它们包含相同的字符,并且每个字符出现的次数也相同。通过将两个字符串排序后,它们的排序结果应该是相同的。因此,可以通过比较排序后的结果来判断两个字符串是否是异位词。
2025-06-06 15:10:28
1699
原创 LeetCode——3. 无重复字符的最长子串(Java)
本文介绍了解决LeetCode第3题"无重复字符的最长子串"的两种滑动窗口方法。第一种使用哈希表记录字符出现情况,通过移动左右边界维护窗口;第二种利用数组记录字符最后出现位置,优化空间复杂度。两种方法的时间复杂度均为O(N),空间复杂度分别为O(N)和常量级。以示例"abcabcbb"为例,两种方法都能正确计算出最长无重复子串长度为3。文章详细讲解了每个步骤的执行过程,帮助理解滑动窗口的运行机制。
2025-06-06 12:47:11
2070
原创 LeetCode——15. 三数之和(Java)
文章摘要:本文介绍了LeetCode第15题"三数之和"的解法。题目要求在整数数组中找到所有和为0且不重复的三元组。采用排序+双指针的方法,时间复杂度O(N²),空间复杂度O(1)。首先对数组排序,然后使用双指针法遍历数组,跳过重复元素以避免重复解。通过示例演示了算法执行过程:如输入[-1,0,1,2,-1,-4],排序后得到[-4,-1,-1,0,1,2],最终输出结果为[[-1,-1,2],[-1,0,1]]。该方法高效解决了三数之和问题。
2025-06-05 16:22:47
611
原创 LeetCode——11.盛最多水的容器(Java)
这篇文章介绍了LeetCode第11题"盛最多水的容器"的解法。题目要求在给定的整数数组中找出两条线,使其与x轴构成的容器能容纳最多的水。 解法采用双指针法,时间复杂度O(N),空间复杂度O(1)。具体实现步骤是: 初始化左右指针分别指向数组两端 计算当前容器的面积并与最大值比较 移动高度较小的一侧指针 重复直到左右指针相遇 文中用示例[1,8,6,2,5,4,8,3,7]详细演示了求解过程,最终得到最大面积49。该解法通过每次移动较短边来寻找可能更大的面积,避免了暴力枚举所有可能性。
2025-06-05 12:42:07
652
原创 LeetCode——283.移动零(Java)
本文介绍了两种解决LeetCode 283题"移动零"的算法。第一种方法是遍历+填充,通过遍历数组将非零元素前移,后续补零,时间复杂度O(N),空间复杂度O(1)。第二种方法是遍历+交换,使用双指针遍历数组并交换元素位置,同样保持高效性。文章详细说明了两种方法的实现步骤,并通过示例数组[0,1,0,3,12]逐步演示了数组的变化过程。两种方法都能在不复制数组的情况下原地操作,将零元素移动到数组末尾并保持非零元素相对顺序。
2025-06-05 11:21:22
765
原创 LeetCode——128.最长连续序列(Java)
这篇文章介绍了如何在未排序的整数数组中寻找最长连续序列的解法。主要采用排序方法,时间复杂度为O(NlogN),空间复杂度为O(N)。算法思路是先将数组排序,然后遍历数组统计连续序列的长度。当当前元素与前一个元素连续时增加计数,否则重置计数,最终返回最大连续长度。文章通过示例[100,4,200,1,3,2]演示了算法过程,最终输出最长连续序列长度为4。代码实现使用Java语言,包含边界条件处理(空数组直接返回0)。
2025-06-04 21:42:55
505
原创 LeetCode——49.字母异位词分组(Java)
摘要:本文介绍了LeetCode上"字母异位词分组"问题的Java解法。字母异位词是指由相同字母重新排列组成的单词。解题核心思路是对字符串排序后作为哈希表键值,将排序结果相同的单词归为一组。算法时间复杂度为O(n·klogk),空间复杂度为O(n·k),其中n是字符串数量,k是字符串最大长度。代码实现使用HashMap存储排序后的字符串作为键,对应原字符串列表作为值,最后返回所有分组结果。
2025-06-04 21:19:07
363
原创 LeetCode——1.两数之和(Java)
摘要:本文介绍了LeetCode"两数之和"问题的两种Java解法。暴力枚举法通过双层循环比较所有组合,时间复杂度O(n²)。哈希表法利用HashMap存储元素值及其索引,仅需一次遍历即可找到匹配对,时间复杂度优化至O(n)。两种方法均能正确返回满足条件的下标组合,但哈希表解法在效率上更优,适合处理大规模数据。文章包含代码示例和详细解题思路分析。
2025-06-04 17:01:42
493
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅