File tree 1 file changed +89
-0
lines changed
1 file changed +89
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for singly-linked list.
3
+ * struct ListNode {
4
+ * int val;
5
+ * ListNode *next;
6
+ * ListNode() : val(0), next(nullptr) {}
7
+ * ListNode(int x) : val(x), next(nullptr) {}
8
+ * ListNode(int x, ListNode *next) : val(x), next(next) {}
9
+ * };
10
+ */
11
+ class Solution {
12
+ public:
13
+ ListNode* getMid(ListNode* head)
14
+ {
15
+ ListNode* slow = head;
16
+ ListNode* fast = head -> next;
17
+
18
+ while(fast != NULL && fast -> next != NULL)
19
+ {
20
+ fast = fast -> next -> next;
21
+ slow = slow -> next;
22
+ }
23
+
24
+ return slow;
25
+ }
26
+
27
+ ListNode* merge(ListNode* left, ListNode* right)
28
+ {
29
+ if(left == NULL)
30
+ return right;
31
+ if(right == NULL)
32
+ return left;
33
+ ListNode* ans = new ListNode(-1);
34
+ ListNode* temp = ans;
35
+
36
+ while(left != NULL && right != NULL)
37
+ {
38
+ if(right -> val < left -> val)
39
+ {
40
+ temp -> next = right;
41
+ temp = right;
42
+ right = right ->next;
43
+ }
44
+ else
45
+ {
46
+ temp -> next = left;
47
+ temp = left;
48
+ left = left -> next;
49
+ }
50
+ }
51
+
52
+ while(left != NULL)
53
+ {
54
+ temp -> next = left;
55
+ temp = left;
56
+ left = left -> next;
57
+ }
58
+ while(right != NULL)
59
+ {
60
+ temp -> next = right;
61
+ temp = right;
62
+ right = right ->next;
63
+ }
64
+
65
+ return ans -> next;
66
+ }
67
+
68
+ ListNode* sortList(ListNode* head) {
69
+ // base case
70
+ if(head == NULL || head -> next == NULL)
71
+ return head;
72
+
73
+ //divide list into two halves
74
+ ListNode* mid = getMid(head);
75
+
76
+ ListNode* left = head;
77
+ ListNode* right = mid -> next;
78
+ mid -> next = NULL;
79
+
80
+ //recursive calls for sort the both halves
81
+ left = sortList(left);
82
+ right = sortList(right);
83
+
84
+ //merge the halves
85
+ ListNode* ans = merge(left, right);
86
+
87
+ return ans;
88
+ }
89
+ };
You can’t perform that action at this time.
0 commit comments