LeetCode——Merge k Sorted Lists
Discription:
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
Subscribe to see which companies asked this question.
思路:其实就是归并排序的最后一步归并操作。思想是递归分治,先把一个大问题分成2个子问题,然后对2个子问题的解进行合并。经过一次遍历就能找出已经有序的序列。就算是题目中给出的条件,已经有K个已经排好序的链表。然后递归的把问题分成2个,4个。。。。logK个子序列。然后每两个子序列的解进行合并。最后得到一个排好序的链表。时间复杂度为O(nlogK)。
代码:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution { public ListNode merge2Lists(ListNode list1, ListNode list2) { ListNode head = new ListNode(0);
ListNode cur = head; while(list1 != null && list2 != null) {
if(list1.val < list2.val) {
cur.next = list1;
list1 = list1.next;
}
else {
cur.next = list2;
list2 = list2.next;
}
cur = cur.next;
} while(list1 != null) {
cur.next = list1;
list1 = list1.next;
cur = cur.next;
} while(list2 != null) {
cur.next = list2;
list2 = list2.next;
cur = cur.next;
} return head.next;
} public ListNode mergeKLists(ListNode[] lists) { if(lists == null || lists.length == 0) {
return null;
} if(lists.length == 1) {
return lists[0];
} int mid = lists.length / 2; ListNode list1 = mergeKLists(Arrays.copyOfRange(lists, 0, mid));
ListNode list2 = mergeKLists(Arrays.copyOfRange(lists, mid, lists.length)); return merge2Lists(list1, list2);
}
}
为何这道题Java的效率这么高,把C/C++都完爆了。

LeetCode——Merge k Sorted Lists的更多相关文章
- LeetCode: Merge k Sorted Lists 解题报告
Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and descr ...
- [LeetCode] Merge k Sorted Lists 合并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 这 ...
- LeetCode:Merge k Sorted Lists
题目链接 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexi ...
- leetcode -- Merge k Sorted Lists add code
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. [ ...
- LeetCode Merge k Sorted Lists (链表)
题意 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity ...
- [Leetcode] Merge k sorted lists 合并k个已排序的链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 思 ...
- Leetcode:Merge k Sorted Lists分析和实现
题目大意是传入一个链表数组lists,每个链表都由若干个链接的链表结点组成,并且每个链表结点记录一个整数.题目保证传入的链表中的整数按从小到大进行排序. 题目要求我们输出一个新的链表,这个链表中应该包 ...
- LeetCode Merge k Sorted Lists 解决报告
https://oj.leetcode.com/problems/merge-k-sorted-lists/ 归并K已经整理阵列,和分析算法的复杂. 解决报告:无论是不考虑优化,最简单的实现是要重新走 ...
- LeetCode —— Merge k Sorted Lists
/* ** 算法的思路: ** 1.将k个链表的首元素进行建堆 ** 2.从堆中取出最小的元素,放到链表中 ** 3.如果取出元素的有后续的元素,则放入堆中,若没有则转步骤2,直到堆为空 */ #in ...
随机推荐
- Top 20 Java Libries Used by Github's Most Popular Java Projects
Top 20 Java Libries Used by Github's Most Popular Java Projects:
- html5使用FileReader上传图片
客户端代码是网上找的,修改为.net代码. <html><head> <meta charset="utf-8"> <titl ...
- C#WebBrowser控件使用教程与技巧收集--苏飞收集
C#WebBrowser控件使用教程与技巧收集--苏飞收集 先来看看常用的方法 Navigate(string urlString):浏览urlString表示的网址 Navigate(System. ...
- c# 操作excel 替代方案
一直使用excel com 接口进行excel 操作,最近一次因为权限折腾了个够呛,果断放弃,使用 NPOI FileStream file = new FileStream(url, FileMod ...
- windows server 2008 R2 FTP登陆错误。
建立了一个域用户ftp. 始终登陆不上winserver 2008 R2上的FTP. 错误如下: 530-User cannot log in. Win32 error: Logon failur ...
- android通话时第二通电话呼叫等待提示音音量大小
callnotifier.java public void run() { ...... switch (mToneId) { case TO ...
- php - 执行Linux命令没有报错但也没有输出
今天我需要在同事访问我的PHP页面的时候执行一段python脚本,于是我的代码是这样写的: 1 <?php 2 function my_workjob(){ 3 $this->makeLo ...
- Java Split以竖线作为分隔符
今天用到了Java中的Split函数,要以“|”作为分割符,当输入竖线时,发现出错,这个问题应该很久前就遇到过,不过太长时间就给忘了! 网上一搜,就找到了答案,这是因为split里面有两个参数,其中一 ...
- Difference between Satisfiable, Valid, Unsatisfiable & Invalid
A formula is satisfiable if it is possible to find an interpretation (model) that makes the formula ...
- IOS从一个APP跳到另一个APP
以下为跳转到大众点评APP代码如下: NSString *requestUrlString = @"dianping://shopinfo?id=1000"; NSURL *req ...