206. Reverse Linked List

問題描述

Reverse a singly linked list.

Example:

Input: 1->2->3->4->5->NULL
Output: 5->4->3->2->1->NULL
Follow up:

A linked list can be reversed either iteratively or recursively. Could you implement both?

思路

Iteratively的解法,時間、空間復雜度為O(n)。
用tail和head兩個指針循環。head在原列表,tail在新列表。

    def reverseList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        if head == None:
            return None
        tail = ListNode(head.val)
        tail.next = None
        head = head.next
        while head!= None:
            tmp = ListNode(head.val)
            tmp.next = tail
            tail = tmp
            head = head.next
        return tail  
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容