Merge k Sorted Lists
来源:互联网 发布:淘宝快递一直显示揽件 编辑:程序博客网 时间:2024/06/01 08:18
Merge k Sorted Lists
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
解题思路:
目的要合并K个sorted Lists,程序建立在合并两个sorted lists。之后采用二分法对K个list进行合并。整个算法过程类似归并排序。
另外:如果直接逐条合并链表,会超时!!
Code:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:ListNode *mergeList(ListNode *l1,ListNode *l2){if(l1==NULL)return l2;if(l2==NULL)return l1;ListNode *head=NULL;ListNode *cur=NULL;ListNode *p=l1;ListNode *q=l2;while(p && q){ListNode *node;if(p->val <q->val){node=p;p=p->next;}else{node=q;q=q->next;}if(head==NULL)head=cur=node;else{cur->next=node;node->next=NULL;cur=node;}}if(p)cur->next=p;else if(q)cur->next=q;return head;}ListNode* helper(vector<ListNode *> &lists,int l,int r){if(l<r){int m=(l+r)/2;return mergeList(helper(lists,l,m),helper(lists,m+1,r));}return lists.at(l);}ListNode *mergeKLists(vector<ListNode *> &lists){if(lists.size()==0)return NULL;return helper(lists,0,lists.size()-1);}};
0 0
- Merge K Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge K Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge K sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- BUPT 2014新生暑假个人排位赛04
- 在WIN7下配置SAMBA服务器
- hduoj1089(A+B for Input-Output Practice (I))
- 输入6个字符串,并对它们按从大到小的顺序排序后输出
- lua 热更新
- Merge k Sorted Lists
- 好用的营销软件下载详情咨询
- 一个新的开始,开源项目thor
- 随机生成一个三维数组,编程求深度的平均值,保存在一个二维数组中
- IIS7.5 配置 PHP 5.3.5
- hduoj1091(A+B for Input-Output Practice (III))
- 总结一下mysql的随机IO和顺序IO
- Android - 开发实例(16):ListView新的使用方式
- 找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没鞍点),打印出有关信息