File tree 1 file changed +31
-0
lines changed
common_questions/swap_in_pairs
1 file changed +31
-0
lines changed Original file line number Diff line number Diff line change
1
+ # Given a linked list, swap every two adjacent nodes and return its head.
2
+ # For example,
3
+ # Given 1->2->3->4, you should return the list as 2->1->4->3.
4
+ # Your algorithm should use only constant space. You may not modify the
5
+ # values in the list, only nodes itself can be changed
6
+
7
+ def swapInPairs (head ):
8
+ if head == None :
9
+ return None
10
+ if head .next == None :
11
+ return head
12
+ prev = head
13
+ curr = head .next
14
+ newHead = curr
15
+
16
+ while True :
17
+ nextPrev = curr .next
18
+ if nextPrev == None : # reached end of list
19
+ curr .next = prev
20
+ prev .next = None
21
+ break
22
+ nextCurr = nextPrev .next
23
+ if nextCurr == None :
24
+ curr .next = prev
25
+ prev .next = nextPrev
26
+ break
27
+ curr .next = prev
28
+ prev .next = nextCurr
29
+ prev = nextPrev
30
+ curr = nextCurr
31
+ return newHead
You can’t perform that action at this time.
0 commit comments