[51Qs] Reverse Linked List

# Leetcode #206
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
"""
head
|
IN 1->2->3->4->Null
OUT
Null<-1<-2<-3<-4
Intermediate State1
** *
1<-2 3->4->Null
| | \
prev curr nextTemp
Intermediate State2
1<-2<-3 4->NULL
| |
prev curr
*** ****
where *: nextTemp=curr.next(old) # from [3->4] to [3 4]
where **: curr.next(new)=prev(old) # from [2 3] to [2<-3], since prev=2, curr=3
where ***: prev(new)=curr(old) # from [prev=2] to [prev=3]
where ****: curr(new)=nextTemp # from [curr=3] to [curr=4]
"""
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
prev = None
curr = head
while curr:
nextTemp = curr.next
curr.next = prev
prev=curr
curr = nextTemp
return prev
view raw reverseList.py hosted with ❤ by GitHub

[51Qs] medianSortedArrays

[51Qs] Shortest Path