less than 1 minute read

Question

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

<Example 1>

Input:  head = [1, 2, 3, 4, 5]
Output: [5, 4, 3, 2, 1]

<Example 2>

Input:  head = [1, 2]
Output: [2, 1]

<Example 3>

Input:  head = []
Output: []

<Constraints>

  • The number of nodes in the list is the range [0, 5000].
  • -5000 <= Node.val <= 5000

Solution

# 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: Optional[ListNode]) -> Optional[ListNode]:
        prev, curr = None, head

        while curr:
            next_curr = curr.next
            curr.next = prev
            prev = curr
            curr = next_curr
        return prev

Time/Space Complexity

  • Time Complexity: O(n)
  • Space Complexity: O(1)

Leave a comment