class Solution:
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
cur = head
prev = None
while cur:
temp = cur.next
cur.next = prev
prev = cur
cur = temp
return prev
# Time Complexity: O(n)
# Space Complexity: O(1)
The βReverse Linked Listβ problem asks us to reverse a singly linked list, so that the head becomes the tail, and all the links point in the opposite direction. This is a foundational problem in data structures, especially for understanding pointer manipulation in linked lists.
Example:
1 β 2 β 3 β 4 β 5 β NULL5 β 4 β 3 β 2 β 1 β NULLReversing a linked list is one of the most common operations you may need to perform in both academic and real-world applications. It teaches the fundamentals of:
We can reverse a singly linked list using an iterative approach by keeping track of three pointers:
prev: initially set to Nonecur: the current node being processedtemp: stores the next node so we don't lose reference during reversalcur = head and prev = None.cur is not None:
cur.next in a temporary variable temp.cur.next = prev to reverse the direction of the link.prev to cur.cur to temp.prev will point to the new head of the reversed list.prev.
Input: 1 β 2 β 3
Steps:
Time Complexity: O(n), where n is the number of nodes. Each node is visited once.
Space Complexity: O(1), as the reversal is done in-place using constant extra space.
NoneThe βReverse Linked Listβ problem is a staple in learning linked lists and pointer manipulation. It teaches how to carefully update node references to reverse the list efficiently in-place, and builds foundational skills for more complex linked list operations.