206. Reversed Linked List

Given the head of a singly linked list, reverse the list, and return the reversed list.

\

Solution 1: Iterative:

class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        prev, curr = None, head
        while curr:
            temp = curr.next
            curr.next = prev
            prev, curr = curr, temp
        return prev

\

Solution 2: recursive:

image.png

class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        if not head:
            return None
        
        newHead = head
        if head.next:
            newHead = self.reverseList(head.next) #保证更新到最末尾的node
            head.next.next = head
        head.next = None

        return newHead

21. Merge Two Linked List