题目描述:
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
示例:
输入:
[
1->4->5,
1->3->4,
2->6
]
输出: 1->1->2->3->4->4->5->6
通过答案:
/**
* Definition for singly-linked list. //用递归,也可用分而治之的思想或者暴力解决
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeKLists(ListNode[] lists) {
int min=Integer.MAX_VALUE; //新建一个最小值记录
int index=-1; //链表数组下标
for(int i=0;i<lists.length;i++){
if(lists[i]!=null&&lists[i].val<min){
min=lists[i].val;
index=i;
}
}
if(index==-1)return null; //此链表为空
ListNode res=lists[index]; //新建节点来记录结果
lists[index]=lists[index].next;
res.next=mergeKLists(lists); //运用递归
return res;
}
}