反转单链表

Posted gugu-da

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反转单链表相关的知识,希望对你有一定的参考价值。

方法1:

迭代

时间复杂度:O(n)

空间复杂度:O(1)

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        p = None
        cur = head
        while cur:
            q = cur.next
            cur.next = p
            p , cur = cur , q
        return p

方法二:

递归

时间复杂度:O(n)

空间复杂度:O(n)

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        if not head or not head.next:
            return head
        cur = self.reverseList(head.next)
        head.next.next = head
        head.next = None
        return cur

以上是关于反转单链表的主要内容,如果未能解决你的问题,请参考以下文章

手撕代码之反转单链表

反转单链表

单链表反转

小代码 单链表之反转 然后交错重连+稀疏矩阵

递归-反转单链表 -图解

看一遍就理解,图解单链表反转