【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
相关推荐
顶点多余5 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
罗西的思考7 小时前
【Agentic RL / 强化学习框架】Molt 设计解读
人工智能·算法·机器学习
hahaha60167 小时前
HLS高层次综合设计技巧--C++类和模板
图像处理·人工智能·算法·计算机视觉
多弗朗皮卡丘8 小时前
算法详解4:买卖股票的最佳时机系列(上)
算法
维克兜率天10 小时前
【维克】动量指标家族:RSI、ROC、CCI、Momentum全面解析
python·算法
AI情绪识别开源11 小时前
检信 AI 智能推广平台(代号:JX-Promote)
人工智能·算法·erlang
老当益壮梁奶奶11 小时前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法
不会就选b12 小时前
算法日常・每日刷题--<BFS拓扑排序>4
算法
不正经学生12 小时前
C语言动态内存管理(上):堆上的自由与责任
c语言·开发语言·c++·算法·面试
伟大的车尔尼12 小时前
贪心的概念
数据结构·算法·贪心