Skip to content

Commit 8d53853

Browse files
authored
Merge pull request #123 from SaimantikaBasu/patch-1
Update 23.cpp
2 parents 7afd9ba + f3b8be1 commit 8d53853

File tree

1 file changed

+40
-24
lines changed

1 file changed

+40
-24
lines changed

leetcode/cpp/linkedlist/23.cpp

Lines changed: 40 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,32 +10,48 @@
1010
*/
1111
class Solution {
1212
public:
13-
ListNode* merge_two(ListNode* l1,ListNode* l2){
14-
ListNode* res=NULL;
15-
if(!l1) return l2;
16-
if(!l2) return l1;
17-
if(l1->val<=l2->val){
18-
res=l1;
19-
res->next=merge_two(l1->next,l2);
20-
}else{
21-
res=l2;
22-
res->next=merge_two(l1,l2->next);
13+
ListNode * mergeTwoLL(ListNode * head1 , ListNode * head2){
14+
if(head1 == nullptr || head2 == nullptr)
15+
return head1==nullptr?head2:head1;
16+
ListNode* curr1 = head1;
17+
ListNode* curr2 = head2;
18+
ListNode* head = new ListNode(-1);
19+
ListNode* curr = head;
20+
21+
while(curr1!= nullptr && curr2!= nullptr){
22+
if(curr1->val <= curr2->val){
23+
curr->next = curr1;
24+
curr1 = curr1->next;
25+
curr = curr->next;
26+
}
27+
else{
28+
curr->next = curr2;
29+
curr2 = curr2->next;
30+
curr = curr->next;
2331
}
24-
return res;
2532
}
33+
if(curr1==nullptr)
34+
curr->next = curr2;
35+
else if(curr2 == nullptr)
36+
curr->next = curr1;
2637

38+
return head->next;
39+
}
40+
ListNode* mergeKLL(vector<ListNode*> lists,int si ,int ei)
41+
{
42+
if(si==ei)
43+
return lists[si];
44+
if(si+1==ei)
45+
return mergeTwoLL(lists[si],lists[ei]);
46+
47+
int mid=(si+ei)/2;
48+
return mergeTwoLL(mergeKLL(lists,si,mid),mergeKLL(lists,mid+1,ei));
49+
}
2750
ListNode* mergeKLists(vector<ListNode*>& lists) {
28-
if(lists.empty()) return NULL;
29-
int last=lists.size()-1,i,j;
30-
while(last!=0){
31-
i=0;j=last;
32-
while(i<j){
33-
lists[i]=merge_two(lists[i],lists[j]);
34-
i++;
35-
j--;
36-
}
37-
last=j;
38-
}
39-
return lists[0];
51+
if(lists.size()==0)
52+
return NULL;
53+
int si=0;int ei=lists.size()-1;
54+
55+
return mergeKLL(lists,si,ei);
4056
}
41-
};
57+
};

0 commit comments

Comments
 (0)