From c56064371977ec8d1f26e3afa6dba7c3f5c22367 Mon Sep 17 00:00:00 2001 From: technisRahulk <42281303+technisRahulk@users.noreply.github.com> Date: Sat, 24 Oct 2020 02:02:26 +0530 Subject: [PATCH] Create Merge_K_sorted_Linked_Lists.cpp Divide and conquer approach --- .../Merge_K_sorted_Linked_Lists.cpp | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Data Structures/Linked List/Linear Linked List/Merge_K_sorted_Linked_Lists.cpp diff --git a/Data Structures/Linked List/Linear Linked List/Merge_K_sorted_Linked_Lists.cpp b/Data Structures/Linked List/Linear Linked List/Merge_K_sorted_Linked_Lists.cpp new file mode 100644 index 0000000..933e455 --- /dev/null +++ b/Data Structures/Linked List/Linear Linked List/Merge_K_sorted_Linked_Lists.cpp @@ -0,0 +1,38 @@ +class Solution { +private: + ListNode*merge(ListNode*a,ListNode*b){ + ListNode*res=NULL; + if(a==NULL){ + return b; + } + else if(b==NULL){ + return a; + } + if(a->val<=b->val){ + res=a; + res->next=merge(a->next,b); + } + else{ + res=b; + res->next=merge(a,b->next); + } + return res; + } + ListNode*utils(vector& lists,int s,int e){ + if(s==e){ + return lists[s]; + } + int mid=(s+e)/2; + ListNode*m1=utils(lists,s,mid); + ListNode*m2=utils(lists,mid+1,e); + return merge(m1,m2); + } +public: + ListNode* mergeKLists(vector& lists) { + if(lists.size()==0||(lists[0]==NULL&&lists.size()==1 )) + return NULL; + ListNode*res=NULL; + res=utils(lists,0,lists.size()-1); + return res; + } +};