File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed
14 - Linked List Data Structure Problems/01 - Singly Linked List Problems/24 - Merge K Sorted Linked Lists Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+ Node* mergeTwoLists (Node* l1, Node* l2){
4+ Node* temp = new Node (0 );
5+ Node* current = temp;
6+
7+ while (l1 != NULL && l2 != NULL ){
8+ if (l1 -> data < l2 -> data){
9+ current -> next = l1;
10+ l1 = l1 -> next;
11+ }else {
12+ current -> next = l2;
13+ l2 = l2 -> next;
14+ }
15+
16+ current = current -> next;
17+ }
18+
19+ if (l1 != NULL ) current -> next = l1;
20+ if (l2 != NULL ) current -> next = l2;
21+
22+ return temp -> next;
23+ };
24+
25+ Node* mergeKListsHelper (vector<Node*>& arr, int left, int right){
26+ if (left == right) return arr[left];
27+
28+ int mid = left + (right - left) / 2 ;
29+
30+ Node* leftMerge = mergeKListsHelper (arr, left, mid);
31+ Node* rightMerge = mergeKListsHelper (arr, mid+1 , right);
32+
33+ return mergeTwoLists (leftMerge, rightMerge);
34+ };
35+
36+ Node* mergeKLists (vector<Node*>& arr) {
37+ if (arr.empty ()) return NULL ;
38+
39+ return mergeKListsHelper (arr, 0 , arr.size () -1 );
40+ }
41+ };
You can’t perform that action at this time.
0 commit comments