Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution:
- def getLength(self, head):
- cnt = 1
- while(head.next != None):
- head = head.next
- cnt = cnt + 1
- return cnt
- def sort(self, preArray, l, r):
- if(l + 1 >= r):
- return preArray
- mid = (l + r) // 2
- head = preArray
- preArray = self.sort(preArray, l, mid)
- array = preArray.next
- array2 = array
- preArray2 = preArray
- for i in range(l, mid):
- preArray2 = preArray2.next
- array2 = array2.next
- preArray2 = self.sort(preArray2, mid, r)
- array = preArray.next
- array2 = preArray2.next
- lpoint = l
- midpoint = mid
- while(lpoint < midpoint and midpoint < r):
- if(array.val < array2.val):
- array = array.next
- preArray = preArray.next
- lpoint = lpoint + 1
- else:
- array2Next = array2.next
- preArray.next = array2
- array2.next = array
- preArray2.next = array2Next
- preArray = preArray.next
- array2 = array2Next
- midpoint = midpoint + 1
- lpoint = lpoint + 1
- return head
- def sortList(self, head: ListNode) -> ListNode:
- if(head == None):
- return head
- preHead = ListNode(-1)
- preHead.next = head
- length = self.getLength(head)
- preHead = self.sort(preHead, 0, length)
- return preHead.next
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement