Merge k Sorted Lists
2015-08-24 00:51
218 查看
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
Solution:
Solution:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ bool cmp(const ListNode *a, const ListNode *b) { return a->val > b->val; } class Solution { public: ListNode* mergeKLists(vector<ListNode*>& lists) { ListNode *lead = new ListNode(-1), *p = lead; for(auto iter = lists.begin(); iter != lists.end(); ) { if(*iter == NULL) iter = lists.erase(iter); else iter++; } int len = lists.size(); if(!len) return lead->next; sort(lists.begin(), lists.end(), cmp); while(len) { p->next = lists[len-1]; lists[len-1] = lists[len-1]->next; if(!lists[len-1]) { lists.pop_back(); len--; } else adjust(lists); p = p->next; } return lead->next; } void adjust(vector<ListNode *> &lists) { int len = lists.size(); ListNode *tmp = lists[len-1]; int i = len - 1; while(--i >= 0) { if(lists[i]->val >= tmp->val) break; else lists[i+1] = lists[i]; } lists[++i] = tmp; } };
相关文章推荐
- 剑指Offer面试题:9.二进制中1的个数
- 通过反射,调用类中的方法
- 【MySQL集群】——Java程序连接MySQL集群
- HDUOJ_3665(Seaside)(dijkstra)
- 【C语言】预处理指令—条件编译
- 解题报告 之 HDU5319 Painter
- JavaHttpGet中文内容编码为GBK时注意
- MySQL安装方法
- 解题报告 之 2015蓝桥杯 垒骰子
- C++: 安装minGW,Msys;对接NeatBeans IDE
- 编写高质量代码改善C#程序的157个建议——建议147:重构多个相关属性为一个类
- [HDU 5410]CRB and His Birthday[01、完全背包]
- POJ1236 - Network of Schools tarjan
- 解题报告 之 HDU5323 Solve this interesting problem
- Leetcode解题笔记-Combination Sum
- 笔记一下动态MST离线的分治做法
- Hbuilder开发app实战-识岁05-Crypto.js实现各种js加密算法
- 实现一个事务多个dao情况下,使用同一个connection,保证线程安全
- 题目:两个整数相除
- Hadoop(最新版ChainMapper链接MapReduce作业带原理分析)