[LeetCode]Merge k Sorted Lists
来源:互联网 发布:emlog博客源码下载 编辑:程序博客网 时间:2024/06/03 21:06
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) { if (lists.size() == 0){return NULL;}if (lists.size() == 1){return lists[0];}int pos = 0;int count = 0;for (int i = 0; i < lists.size(); i++){ListNode* p = lists[i];while(p != NULL){count++;p = p->next;}}if (count > 0){ListNode* ans = new ListNode(0);ListNode* ansTemp= ans;while(count){int min = INT_MAX;for (int i = 0; i < lists.size(); i++){if (lists[i] != NULL){if ( (*lists[i]).val < min){min = (*lists[i]).val;pos = i;}}}ansTemp->val = (*lists[pos]).val;if (count > 1){ansTemp->next = new ListNode(0);ansTemp = ansTemp->next;}lists[pos] = lists[pos]->next;count--;}return ans;}else{return lists[0];} }};
网上看到使用优先队列做的:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: struct comp {//优先队列中默认是less(<),top为最大的元素//此处为greater(>),top为最小元素bool operator() (ListNode *a,ListNode *b){return a->val > b->val;} }; ListNode *mergeKLists(vector<ListNode *> &lists) { ListNode *tmphead = new ListNode(0), *p = tmphead;std::priority_queue<ListNode*, std::vector<ListNode*>, comp> q;for(int i = 0; i < lists.size(); i ++){if(lists[i] != NULL){q.push(lists[i]);}}while(!q.empty()){p->next = q.top();p = p->next;q.pop();if(p ->next != NULL){q.push(p->next);}}return tmphead->next; }};
优先队列的介绍:
http://blog.csdn.net/jet_yingjia/article/details/26394567
0 0
- LeetCode: Merge k Sorted Lists
- LeetCode Merge k Sorted Lists
- LeetCode: Merge k Sorted Lists
- [Leetcode] Merge k Sorted Lists
- [Leetcode] Merge k Sorted Lists
- [Leetcode] Merge K sorted lists
- [LeetCode]Merge k Sorted Lists
- [LeetCode] Merge k Sorted Lists
- LeetCode-Merge k Sorted Lists
- LeetCode: Merge k Sorted Lists
- LeetCode - Merge k Sorted Lists
- LeetCode | Merge k Sorted Lists
- 【leetcode】Merge k Sorted Lists
- Leetcode: Merge k Sorted Lists
- <Leetcode>Merge k Sorted Lists
- [LeetCode] Merge K sorted lists
- [LeetCode] Merge k Sorted Lists
- 【Leetcode】Merge k Sorted Lists
- 蓝牙开启源码分析
- 做好六点可以尽快提升网站收录
- Maven最佳实践:Maven仓库
- Node JS 连接Mysql 数据库
- 大数据导入EXCEL
- [LeetCode]Merge k Sorted Lists
- 匿名社交应用Whisper再融资3600万美元,腾讯参投
- 网站首页被K解决方法和注意事项
- 阿里上市在即!巴菲特泼冷水:50年没买过IPO股票
- iframe 跨域自适应高度的解决方案
- 执行sudo命令出现sudo :is not 0777,must be 440.
- java Http get 和 post 请求的一般流程
- #pragma warning(push, 3)等3句话是干什么的
- C++控制台,画圆,正方形,正三角形。。。没写完。。