链表 08. 反转单链表

题目:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。  简单

方法一:迭代  时间复杂度O(N)  空间复杂度O(1)

def reverseList(head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        if head is None or head.next is None:
            return head

        cur = head
        pre = None
        while cur:
            tmp = cur.next
            cur.next = pre
            pre = cur
            cur = tmp

        return pre

方法二:递归  时间复杂度O(N)  空间复杂度O(N)

def reverseList(head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        if head is None or head.next is None:
            return head

        new_head = self.reverseList(head.next)
        head.next.next = head
        head.next = None

        return new_head

 

posted @ 2022-07-14 13:30  Liang-ml  阅读(8)  评论(0)    收藏  举报