merge-k-sorted-lists 1.0.0
Merge k Sorted Lists
Loading...
Searching...
No Matches
main.cpp
Go to the documentation of this file.
1#include <bits/stdc++.h>
2
3using namespace std;
4
8struct ListNode
9{
10 int val;
12 ListNode() : val(0), next(nullptr) {}
13 ListNode(int x) : val(x), next(nullptr) {}
14 ListNode(int x, ListNode *next) : val(x), next(next) {}
15};
16
18{
19private:
21 {
23 {
24 return A->val > B->val;
25 }
26 };
27public:
28 ListNode* mergeKLists(vector<ListNode*>& lists)
29 {
30 if (lists.empty())
31 return NULL;
32 priority_queue<ListNode*, vector<ListNode*>, Comparator> min_heap;
33 for (ListNode* head: lists)
34 {
35 if (head == NULL)
36 continue;
37 ListNode* current = head;
38 while (current != NULL)
39 {
40 min_heap.push(current);
41 current = current->next;
42 }
43 }
44 if (min_heap.empty())
45 return NULL;
46 ListNode* head = min_heap.top();
47 min_heap.pop();
48 ListNode* current = head;
49 while (!min_heap.empty())
50 {
51 current->next = min_heap.top();
52 min_heap.pop();
53 current = current->next;
54 }
55 current->next = NULL;
56 return head;
57 }
58};
59
60int main()
61{
62
63 return 0;
64}
ListNode * mergeKLists(vector< ListNode * > &lists)
Definition main.cpp:28
int main()
Definition main.cpp:60
Definition for singly-linked list.
Definition main.cpp:9
int val
Definition main.cpp:10
ListNode(int x)
Definition main.cpp:13
ListNode()
Definition main.cpp:12
ListNode * next
Definition main.cpp:11
ListNode(int x, ListNode *next)
Definition main.cpp:14
bool operator()(ListNode *A, ListNode *B)
Definition main.cpp:22