合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
示例:
输入:
[
1->4->5,
1->3->4,
2->6
]
输出: 1->1->2->3->4->4->5->6
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-k-sorted-lists
使用递归 先进行两个链表的合并 然后 再进行下一个的合并
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeKLists(ListNode[] lists) {
ListNode node = null;
for (ListNode list : lists) {
node=mergelist(node,list);
}
return node;
}
public ListNode mergelist(ListNode node, ListNode list) {
if(node==null){
return list;
}
if(list==null){
return node;
}
if (node.val > list.val) {
list.next = mergelist(node, list.next);
return list;
}else {
node.next = mergelist(list, node.next);
return node;
}
}
}