2025/2/24 【双指针法】LeetCode206. 反转链表

206. 反转链表 - 力扣(LeetCode)

代码随想录

1.双指针法

复制代码
# 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):
        # 处理空链表或单节点链表
        if not head or not head.next:
            return head
        
        p = head
        q = p.next
        p.next = None # 将原头节点的 next 置为 None,避免形成环
        while q:
            temp = q.next # 保存 q 的下一个节点
            q.next = p
            p = q
            q = temp
        return p
复制代码

2.递归法

复制代码
# 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):
        return self.reverse(head, None)
    def reverse(self, cur, pre):
        if not cur:
            return pre
        
        temp = cur.next
        cur.next = pre
        return self.reverse(temp, cur)
复制代码

 

posted @   axuu  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示