Google/LintCode:M-合并k个排序链表
来源:互联网 发布:java字符串数组 \0 编辑:程序博客网 时间:2024/06/05 04:56
题目
题目来源:Link
合并k个排序链表,并且返回合并后的排序链表。尝试分析和描述其复杂度。
样例
给出3个排序链表[2->4->null,null,-1->null],返回 -1->2->4->null
代码
/** * Definition for ListNode. * public class ListNode { * int val; * ListNode next; * ListNode(int val) { * this.val = val; * this.next = null; * } * } */ public class Solution { /** * @param lists: a list of ListNode * @return: The head of one sorted list. */ public ListNode mergeKLists(List<ListNode> lists) { // write your code here if(lists==null || lists.size()==0) return null; //if(lists.size()==1) return lists.get(0); int n=lists.size(); ListNode pre = lists.get(0); for(int i=1; i<n; i++){ ListNode cur = lists.get(i); pre = merge(pre,cur); } return pre; } ListNode merge(ListNode a, ListNode b){ ListNode at = a; ListNode bt = b; if(a==null) return b; if(b==null) return a; while(at!=null && bt!=null){//之前写成|| ListNode pre=null; while(at!=null && at.val<=bt.val){ pre=at; at=at.next; } if(pre==null){ while(bt!=null && bt.val<=at.val){//之前遗漏了“=”情况,导致pre可能为空 pre=bt; bt=bt.next; } pre.next=at; }else{ pre.next=bt; } } if(a.val>b.val) return b; else return a; }}
样例
给出3个排序链表[2->4->null,null,-1->null],返回 -1->2->4->null
阅读全文
0 0
- Google/LintCode:M-合并k个排序链表
- 合并k个排序链表,lintcode
- lintcode--合并k个排序链表
- 合并k个排序链表-LintCode
- lintcode -合并k个排序链表
- LintCode--合并k个排序链表
- lintcode 合并k个排序链表
- lintcode-合并k个排序链表-104
- [LintCode 104] 合并k个排序链表(Python)
- LintCode-分治-合并k个排序链表
- [LintCode]104.合并k个排序链表
- lintcode merge-k-sorted-lists 合并k个排序链表
- 题目:合并k个排序链表
- 合并k个排序链表
- 合并k个排序链表
- 合并k个排序链表
- 合并k个排序链表
- 合并k个排序链表
- 【Ubuntu-Tensorflow】程序结束掉GPU显存没有释放的问题
- 【Python】Anaconda安装包
- 年薪30万-50万,站在风口上的大数据面临150万的人才紧缺
- 大端模式和小端模式详解
- 把英语当成是一门语言去学习
- Google/LintCode:M-合并k个排序链表
- 合并链表
- Retrofit2整理
- Linux文件的归档与压缩
- MATLAB实现Catmull-Clark细分(CC细分)
- VMware vSphere/vCenter/ESX(i)介绍
- python u'\ ' 输出编码问题
- 面试题---二进制中1的个数
- 【面试虐菜】—— MongoDB知识整理