【LeetCode】206. 反转链表

题目链接:206. 反转链表

我的做法和官方题解略有不同,在此记录一下。

思路

三个指针配合,一个用于保存原有的路径,两个用于反转。

解题过程

设置三个指针 first, second, thrid 分别指向相邻的三个节点。将first和second之间的路径(next指向)反转,然后依次按原路径向前移动这三个指针。当second指针为空的时候,结束循环,first指针即为反转后的头节点。

退化情况处理:当节点个数小于等于1时,返回head。

复杂度

  • 时间复杂度: O(n)
  • 空间复杂度: O(1)

代码

python3 复制代码
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        # 零个和一个节点的退化情况
        if head == None or head.next == None:
            return head

        first = head
        second = head.next
        first.next = None # 去掉环

        while second != None:
            third = second.next # 防丢
            second.next = first # 反转
            first = second # 向前移动
            second = third
        return first
相关推荐
2601_96187524几秒前
法考资料2026|全套|资料已整理
数据结构·算法·链表·贪心算法·eclipse·线性回归·动态规划
无限码力5 分钟前
美团研发岗 4月18号笔试真题 - 坐标
算法·美团笔试真题·美团笔试题·美团研发岗笔试题·美团研发岗4月18号真题
有点。1 小时前
C++倍增法(练习题)
c++·算法
智者知已应修善业2 小时前
【51单片机8位数码管同时倒计时从9999】2024-1-25
c++·经验分享·笔记·算法·51单片机
洛水水2 小时前
【力扣100题】86.柱状图中最大的矩形
算法·leetcode·职场和发展
渡之2 小时前
GRiM-Net 深度解析 | 无人机 GNSS 拒止场景下两阶段跨视角视觉定位框架
深度学习·算法·动态规划·无人机
测试仪器廖生135902563852 小时前
罗德与施瓦茨 FSP13频谱分析仪FSP30
网络·人工智能·算法
happymaker06262 小时前
LeetCodeHot100——560.和为K的子数组
算法
dtq04243 小时前
C语言刷题数组5,6(求平均值,求最大值)
c语言·数据结构·算法
郭梧悠3 小时前
Hash算法入门Hash冲突解决方案
算法·哈希算法