Skip to content

Commit 4b676e0

Browse files
authored
Create main.cpp
1 parent 2fd9356 commit 4b676e0

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

1 file changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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+
};

0 commit comments

Comments
 (0)