- 博客(4)
- 收藏
- 关注
原创 LeetCode209.长度最小的子数组
本文分析了LeetCode「长度最小的子数组」问题,使用滑动窗口算法求解。通过维护双指针(快慢指针)动态调整窗口范围,计算满足和≥target的最短子数组长度。代码实现中,快指针扩展窗口,慢指针收缩窗口,实时更新最小长度。时间复杂度O(n),空间复杂度O(1)。该解法高效遍历所有可能子数组,最终返回最小长度或0(无解)。核心思想是通过滑动窗口优化暴力搜索,典型双指针应用案例。
2025-09-01 22:37:00
178
原创 LeetCode977.Squares of a Sorted Array(有序数组的平方)
本文介绍了如何解决LeetCode上"有序数组的平方"问题。给定一个非严格递增数组,要求返回各元素平方后仍保持递增顺序的新数组。关键点在于利用双指针法,从数组两端向中间遍历,比较左右指针所指元素的绝对值大小,将较大的平方值逆序填入结果数组。这种方法避免了直接排序的时间复杂度O(nlogn),达到了O(n)的时间复杂度。文章包含题目分析、C++代码实现及简要总结,展示了高效解决该问题的思路。
2025-08-31 21:28:19
448
原创 LeetCode27. Remove Element(移除元素)
本文介绍了LeetCode上移除数组中指定元素val的题目解法。首先分析题目要求,指出暴力解法时间复杂度为O(n²)的不足。然后提出双指针优化思路:使用InsertPos指针标记"空闲位置"起点,遍历数组时遇到非val元素就覆盖到InsertPos位置,并移动指针。这种方法仅需一次遍历,时间复杂度降为O(n)。最后给出C++代码实现,并说明InsertPos最终值即为移除val后的元素个数。文章强调双指针算法的高效性,适合处理类似数组元素移动问题。
2025-08-31 17:43:57
1477
原创 LeetCode704. Binary Search(二分查找)
本文分析了二分查找算法的不同实现方式,重点讨论了四种区间定义下的代码实现:左闭右闭、左闭右开、左开右开和左开右闭。每种区间定义对应的初始值设置、循环条件和端点更新策略都有所不同,需要特别注意避免死循环。作者在左开右闭实现中发现了向下取整导致的死循环问题,并给出了补丁解决方案。文章强调理解区间定义对正确实现二分查找的重要性,建议读者根据实际需求选择合适的区间定义方式。
2025-08-31 14:32:23
1376
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅