File tree 1 file changed +41
-0
lines changed
1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change
1
+ # Definition for singly-linked list.
2
+ class ListNode (object ):
3
+ def __init__ (self , x ):
4
+ self .val = x
5
+ self .next = None
6
+
7
+
8
+ class Solution (object ):
9
+ def insertionSortList (self , node ):
10
+ """
11
+ `pre_head` is a common technique that used in linked list problem.
12
+ So we don't need to handle the edge case all the time.
13
+ """
14
+ pre_head = ListNode (float ('-inf' ))
15
+ pre_head .next = node
16
+ pre = pre_head
17
+ while node :
18
+ if node .val >= pre .val : #see if node need to shift, if true, no need to shift this node
19
+ pre = node
20
+ node = node .next
21
+ else :
22
+ next_node = node .next
23
+ self .remove (pre , node )
24
+ self .insert (pre_head , node )
25
+ node = next_node
26
+ return pre_head .next
27
+
28
+ def remove (self , pre , node ):
29
+ pre .next = node .next
30
+
31
+ def insert (self , pre_head , node ):
32
+ curr = pre_head .next
33
+ pre = pre_head
34
+ while curr :
35
+ if node .val < curr .val :
36
+ pre .next = node
37
+ node .next = curr
38
+ break
39
+ pre = curr
40
+ curr = curr .next
41
+
You can’t perform that action at this time.
0 commit comments