Skip to content

Commit 8ebcb8f

Browse files
author
Yubin Bai
committed
pairs
1 parent f4f6554 commit 8ebcb8f

File tree

1 file changed

+31
-0
lines changed
  • common_questions/swap_in_pairs

1 file changed

+31
-0
lines changed

Diff for: common_questions/swap_in_pairs/main.py

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
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

0 commit comments

Comments
 (0)