Merge k Sorted Lists
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
A sorted list is constructed from a list of K's already ordered lists, and an algorithm like merge sorting can be used to test
/** Definition for singly-linked list. * struct ListNode {* int val; * ListNode *next; * ListNode (int x) : Val (x), Next (NULL) {}}; */classSolution { Public: ListNode* Mergeklists (vector<listnode*>&lists) { if(Lists.empty ())returnnullptr; returnHelper (lists,0, Lists.size ()-1); }Private: ListNode* Merge (listnode* left, listnode*Right ) {ListNode* head =NewListNode (0); ListNode* last =Head; while(Left &&Right ) { if(Left->val < right->val) { Last->next =Left ; Left= left->Next; } Else{ Last->next =Right ; Right= right->Next; } Last= last->Next; } Last->next = (left==nullptr)?Right:left; returnHead->Next; } ListNode* Helper (vector<listnode*>& lists,intStartintend) {cout<< Start <<" "<<end <<Endl; if(Start = =end)returnLists[start]; Else if(start+1==end) { returnmerge (Lists[start], lists[end]); } ListNode* left = Helper (lists, start, start+ (End-start)/2); ListNode* Right = Helper (lists, start + (End-start)/2+1, end); returnmerge (Left,right); }};
Merge k Sorted Lists