Algorithms—23.Merge k Sorted Lists
2015-07-24 10:21
567 查看
思路:分治思想,拆分成2个进行处理。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode mergeKLists(ListNode[] lists) {
if (lists.length>2) {
ListNode[] l1=new ListNode[lists.length/2];
ListNode[] l2=new ListNode[lists.length-lists.length/2];
for (int i = 0; i < lists.length; i++) {
if (i<lists.length/2) {
l1[i]=lists[i];
}else {
l2[i-lists.length/2]=lists[i];
}
}
return mergeTwoLists(mergeKLists(l1),mergeKLists(l2));
}else if (lists.length==2){
return mergeTwoLists(lists[0],lists[1]);
}else if (lists.length==1){
return lists[0];
}else {
return null;
}
}
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1==null) {
return l2;
}
if (l2==null) {
return l1;
}
ListNode l=null;
if (l1.val>l2.val) {
l=new ListNode(l2.val);
l.next=mergeTwoLists(l1,l2.next);
}else {
l=new ListNode(l1.val);
l.next=mergeTwoLists(l1.next,l2);
}
return l;
}
}
耗时:356ms,第一次测的时候是中下游,再测了次变成上游了。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode mergeKLists(ListNode[] lists) {
if (lists.length>2) {
ListNode[] l1=new ListNode[lists.length/2];
ListNode[] l2=new ListNode[lists.length-lists.length/2];
for (int i = 0; i < lists.length; i++) {
if (i<lists.length/2) {
l1[i]=lists[i];
}else {
l2[i-lists.length/2]=lists[i];
}
}
return mergeTwoLists(mergeKLists(l1),mergeKLists(l2));
}else if (lists.length==2){
return mergeTwoLists(lists[0],lists[1]);
}else if (lists.length==1){
return lists[0];
}else {
return null;
}
}
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1==null) {
return l2;
}
if (l2==null) {
return l1;
}
ListNode l=null;
if (l1.val>l2.val) {
l=new ListNode(l2.val);
l.next=mergeTwoLists(l1,l2.next);
}else {
l=new ListNode(l1.val);
l.next=mergeTwoLists(l1.next,l2);
}
return l;
}
}
耗时:356ms,第一次测的时候是中下游,再测了次变成上游了。
相关文章推荐
- 解读Django框架中的低层次缓存API
- HDU 2492 Ping pong (树状数组)
- Coefficient of Determination(R Squared)(How to determine goodness of fit)?
- product_category
- Golang实例001
- django 1.8 官方文档翻译: 2-4-4 编写迁移
- django 1.8 官方文档翻译: 2-3-2 关联对象参考
- 解读Django框架中的低层次缓存API
- 详解Django缓存处理中Vary头部的使用
- 简介Django中内置的一些中间件
- 将Django框架和遗留的Web应用集成的方法
- VIEWGOOD(远古)视频点播软件
- golang 静态文件服务器
- HDU 2955 Robberies (01背包)
- codeforces 560 C Gerald's Hexagon
- hdu 3635 Dragon Balls
- Codeforces Round #313 (Div. 2) C. Gerald's Hexagon
- dJANGO RESTFRAMEWORK
- django 1.8 官方文档翻译: 2-1-3 元选项 (初稿)
- CF560C Gerald's Hexagon 六边形能切成多少正三角形