- 博客(12)
- 收藏
- 关注
原创 力扣141.环形链表
摘要:本文介绍了一种使用快慢指针检测链表是否存在环的算法。快指针每次移动两步,慢指针每次移动一步。如果链表有环,快慢指针终会相遇;若无环,快指针将到达链表末尾。算法首先检查链表是否为空或只有一个节点,然后初始化快慢指针。在循环中,快指针移动两步,慢指针移动一步,若两者相遇则返回true,否则当快指针到达末尾时返回false。该方法时间复杂度为O(n),空间复杂度为O(1)。
2025-12-07 15:38:26
147
原创 力扣83.删除排序链表中的重复元素
摘要:该算法通过构建虚头节点和快慢指针来删除链表中的重复元素。虚头节点用于处理头结点可能被删除的情况,快指针遍历链表查找重复元素,慢指针调整前驱节点的指针域以跳过重复节点。当发现重复时,慢指针直接指向快指针的下一个节点,否则同步移动两个指针。最后释放虚头节点内存并返回处理后的链表头结点。该方法保证了链表操作的正确性和内存安全性。
2025-12-04 14:34:06
199
原创 力扣203.移除链表元素
本文介绍了一种删除链表中指定值节点的算法。通过创建虚头节点简化操作,使用双指针(快慢指针)遍历链表:快指针查找目标节点,慢指针记录前驱位置以便修改指针指向。当快指针找到匹配节点时,慢指针直接指向其后继节点;否则双指针同步后移。最后释放虚头节点空间并返回处理后的链表头节点。该方法能正确处理头节点删除情况,时间复杂度O(n),空间复杂度O(1)。
2025-12-03 14:24:45
182
原创 力扣LCR 140.训练计划Ⅱ
本文介绍了一种使用快慢指针法查找链表倒数第cnt个节点的方法。算法首先让快指针先走cnt步,使快慢指针间距为cnt。然后两指针同步移动,当快指针到达链表末尾时,慢指针正好指向目标节点。该方法时间复杂度为O(n),空间复杂度为O(1),适用于单向链表的倒数节点查找问题。
2025-12-03 12:31:11
122
原创 力扣876.链表的中间节点
摘要:本文提出使用快慢指针法查找链表的中间节点。快指针每次移动两步,慢指针每次移动一步。当快指针到达链表末尾时,慢指针正好指向中间节点。该方法时间复杂度为O(n),空间复杂度为O(1),是解决该问题的经典算法。代码实现包括边界条件处理和指针移动逻辑,最终返回慢指针指向的节点。
2025-12-02 13:34:14
154
原创 力扣53.最大子数组和
该文介绍了一种使用贪心算法解决最大子数组和问题的方法。算法通过比较当前元素与前缀和的大小来决定是否重新开始计算子数组,同时不断更新最大和。具体实现中,初始化最大和为数组首元素,遍历数组时动态比较当前和与当前元素值,保留较大者作为新的起点,并持续更新全局最大值。这种方法高效地找到了连续子数组的最大和,时间复杂度为O(n)。
2025-11-07 14:29:35
100
原创 力扣121.买卖股票的最佳时机
摘要:本文提供了一个求解股票买卖最大利润的算法。算法通过遍历股价数组,动态维护当前范围内的最低股价(pmin)和最大利润(pmax)。每次迭代时,计算当前股价与最低股价的差值,更新最大利润;同时比较当前股价与最低股价,更新pmin。最终返回最大利润pmax。时间复杂度为O(n),空间复杂度为O(1)。该算法高效地解决了股票买卖时机选择问题。
2025-11-07 14:25:17
191
原创 力扣88.合并两个有序数组
摘要:本文提供了合并两个有序数组的三种解法:1)直接合并后排序;2)归并排序思想,使用额外空间存储比较结果;3)逆向双指针法,从后向前填充较大元素。其中方法1最简单但效率较低(时间复杂度O((m+n)log(m+n))),方法2使用额外空间(时间复杂度O(m+n)),方法3最优(时间复杂度O(m+n)且无额外空间)。解题关键在于理解数组已排序特性,并通过指针操作避免数据覆盖。
2025-11-06 12:52:00
213
原创 力扣LCR-121.寻找目标值-二维数组
摘要:本文介绍了在二维数组中查找目标值的两种优化算法。方法一从数组左下角开始比较:当当前值小于目标时右移列,大于目标时上移行。方法二从右上角开始比较:当当前值小于目标时下移行,大于目标时左移列。两种方法均利用了数组行列有序的特性,通过逐步缩小查找范围,在O(m+n)时间复杂度内高效完成搜索,避免了暴力遍历的低效问题。两种实现都考虑了数组空值等边界情况,确保算法健壮性。
2025-11-06 12:46:39
156
原创 力扣题283.移动零
摘要:该解决方案使用双指针技术来移动数组中的零元素。定义fast指针遍历数组,slow指针记录非零元素位置。当fast指向非零元素时,交换两指针所指元素并同时移动双指针;若为零则仅移动fast指针。最终非零元素被前移,零元素自然位于数组末尾。算法时间复杂度为O(n),空间复杂度O(1)。
2025-11-05 11:34:51
131
原创 力扣题27.移除元素
该算法使用双指针技术移除数组中等于给定值的元素。快指针遍历数组元素,慢指针记录有效元素位置。当快指针指向的元素不等于目标值时,将其复制到慢指针位置并移动两个指针;否则仅移动快指针。最终返回慢指针的位置,即为保留的有效元素数量。这种方法实现了原地修改,时间复杂度O(n),空间复杂度O(1),高效解决了元素移除问题。
2025-11-05 11:30:15
130
原创 力扣题26.删除有序数组中的重复项
摘要:本文介绍了两种使用双指针法去除有序数组中重复元素的方法。方法1通过比较当前元素与后一个元素,方法2比较当前元素与前一个元素。两种方法都维护一个slow指针记录不重复元素位置,当发现不重复元素时将其放入slow位置并后移指针。最终返回slow值即为去重后的数组长度。两种方法时间复杂度均为O(n),空间复杂度O(1)。代码示例展示了两种实现方式的具体细节。
2025-11-04 18:06:31
107
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅