LeetCode 23. Merge k Sorted Lists
来源:互联网 发布:手机淘宝如何发货 编辑:程序博客网 时间:2024/05/16 10:58
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* mergeKLists(vector<ListNode*>& lists) { heap.resize(lists.size()); int n = 0; for (int i = 0; i < lists.size(); ++i) { if (lists[i] != NULL) { heap[n++] = lists[i]; } } if (n == 0) return NULL; if (n == 1) return heap[0]; BuildMinHeap(heap, n); ListNode* result = heap[0]; ListNode* cur = result; while (n > 1) { if (heap[0]->next != NULL) { heap[0] = heap[0]->next; } else { heap[0] = heap[--n]; } MinHeapify(heap, n, 0); cur->next = heap[0]; cur = cur->next; } return result; }private: void MinHeapify(vector<ListNode*>& heap, int n, int p) { int left = 2 * p + 1; int right = 2 * p + 2; int curIndex = p; if ((left < n) && (heap[left]->val < heap[curIndex]->val)) { curIndex = left; } if ((right < n) && (heap[right]->val < heap[curIndex]->val)) { curIndex = right; } if (curIndex != p) { ListNode* temp = heap[p]; heap[p] = heap[curIndex]; heap[curIndex] = temp; MinHeapify(heap, n, curIndex); } } void BuildMinHeap(vector<ListNode*>& heap, int n) { for (int i = (n - 1) / 2; i >= 0; --i) { MinHeapify(heap, n, i); } } vector<ListNode*> heap;};
0 0
- leetcode 23. LeetCode Merge k Sorted Lists
- [LeetCode]23.Merge k Sorted Lists
- LeetCode --- 23. Merge k Sorted Lists
- LeetCode 23.Merge k Sorted Lists
- [Leetcode] 23. Merge k Sorted Lists
- 【LeetCode】23.Merge k Sorted Lists
- [leetcode] 23.Merge k Sorted Lists
- Leetcode-23.Merge k Sorted Lists
- [Leetcode]23. Merge k Sorted Lists @python
- leetcode 23. Merge k Sorted Lists
- leetcode 23. Merge k Sorted Lists
- leetcode 23. Merge k Sorted Lists
- LeetCode 23. Merge k Sorted Lists
- [leetcode] 23. Merge k Sorted Lists
- LeetCode 23. Merge k Sorted Lists
- LeetCode 23. Merge k Sorted Lists
- LeetCode-23.Merge k Sorted Lists
- Leetcode 23. Merge k Sorted Lists
- android studio genymotion 的安装
- vhost网络设备才会添加eventfd
- LeetCode 206. Reverse Linked List
- LeetCode 21. Merge Two Sorted Lists
- Java面试知识点总结
- LeetCode 23. Merge k Sorted Lists
- theano调用cuda加速
- [WIN32]GetModuleFileNameEx获取当前窗口的可执行文件路径
- 软件开发的各个阶段,为什么只有需求阶段称为工程?
- CSDN初打算
- 观书有感之 "图解TCP/IP"
- 最短路径—Dijkstra算法和Floyd算法
- python之推导式
- MySQL触发器使用详解