Skip to content

Commit d2daa08

Browse files
committed
148 Sort List.py
1 parent 833f1da commit d2daa08

File tree

1 file changed

+66
-4
lines changed

1 file changed

+66
-4
lines changed

148 Sort List.py

+66-4
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,72 @@ def sortList(self, head):
1010
:type head: ListNode
1111
:rtype: ListNode
1212
"""
13-
list = []
14-
poi = head
15-
while poi:
16-
list.append(poi)
13+
if not head or not head.next:
14+
return head
15+
16+
17+
def merge(head_1, head_2):
18+
dummy = ListNode()
19+
ptr = dummy
20+
while head_1 or head_2:
21+
if not head_1:
22+
ptr.next = head_2
23+
break
24+
elif not head_2:
25+
ptr.next = head_1
26+
break
27+
elif head_1.val > head_2.val:
28+
ptr.next = head_2
29+
head_2 = head_2.next
30+
ptr = ptr.next
31+
else:
32+
ptr.next = head_1
33+
head_1 = head_1.next
34+
ptr = ptr.next
35+
return dummy.next
1736

37+
def solver(head):
38+
if not head.next:
39+
return head
40+
if not head.next.next:
41+
if head.val > head.next.val:
42+
new_head = head.next
43+
head.next = None
44+
new_head.next = head
45+
return new_head
46+
else:
47+
head.next.next = None
48+
return head
49+
else:
50+
fast_ptr = head
51+
slow_ptr = head
52+
while fast_ptr:
53+
fast_ptr = fast_ptr.next
54+
if fast_ptr:
55+
fast_ptr = fast_ptr.next
56+
slow_ptr = slow_ptr.next
57+
58+
temp = slow_ptr.next
59+
slow_ptr.next = None
60+
61+
return merge(solver(head), solver(temp))
62+
63+
return solver(head)
64+
65+
66+
head = ListNode(-1,ListNode(5,ListNode(3,ListNode(4,ListNode(0)))))
67+
head_2 = ListNode(4,ListNode(2,ListNode(1,ListNode(3))))
68+
69+
obj = Solution()
70+
71+
def print_LL(head):
72+
s = []
73+
while head:
74+
s.append(head.val)
75+
head = head.next
76+
print(s)
77+
78+
print_LL(obj.sortList(head))
79+
print_LL(obj.sortList(head_2))
1880

1981

0 commit comments

Comments
 (0)