【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
相关推荐
罗西的思考4 小时前
【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (9)--- Reward Judging
人工智能·算法·机器学习
Mr.HeBoYan5 小时前
一次持续三天才出现的丢包故障——深入解析 DPDK Memory Ordering、rte_ring 与 CPU Memory Barrier (下)
linux·网络·算法·架构·dpdk
wabs6666 小时前
关于图论【深度优先搜索的理论基础】
算法·深度优先·图论
先吃饱再说7 小时前
LeetCode 101. 对称二叉树
算法
是Dream呀7 小时前
人眼看不出的伪造,AI如何识别?实测合合信息跨模态鉴伪与去反光技术
算法
QN1幻化引擎7 小时前
SFA 信号场注意力:用8KB参数换248x KV Cache压缩,边缘设备也能跑长序列
人工智能·算法·gitee·gitlab
段一凡-华北理工大学8 小时前
向量数据库实战:选型、调优与落地~系列文章03:向量相似度算法全解:余弦、欧氏、内积,到底该用哪个?
大数据·数据库·人工智能·算法·机器学习·向量相似度·高炉炼铁
cjr_xyi9 小时前
AT1202Contest_c binarydigit 题解
c语言·c++·算法
atunet10 小时前
从算法优化到系统加速的多层级思考7
算法
夜不会漫长10 小时前
数据结构:链表
数据结构·链表