Reverse Linked List [LC#206]
Given the head of a singly linked list, reverse the list, and return the reversed list.
Iterative approach
ββββββ ββββββ ββββββ
<-- βprevβ βcurrβ--> βnextβ-->
ββββββ ββββββ ββββββ
ββββββ ββββββ ββββββ
<-- βprevβ <--βcurrβ βnextβ-->
ββββββ ββββββ ββββββ
ββββββ ββββββ ββββββ
<-- β β <--βprevβ βnextβ-->
ββββββ ββββββ ββββββ
ββββββ ββββββ ββββββ
<-- β β <--βprevβ |currβ-->
ββββββ ββββββ ββββββ
def fn(head):
curr = head
prev = None
while curr:
next_node = curr.next
curr.next = prev
prev = curr
curr = next_node
return prev
Time Complexity
- $T(n) = O(n)$
- $S(n) = O(1)$