题目
解答
直接使用了第21题的代码,两两进行比较。内存消耗和执行用时都比较大。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeKLists(ListNode[] lists) {
if (lists.length == 0) {
return null;
}
if (lists.length == 1) {
return lists[0];
}
ListNode re = mergeTwoLists(lists[0], lists[1]);
for (int i = 2; i < lists.length; i++) {
re = mergeTwoLists(re, lists[i]);
}
return re;
}
public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode rel = new ListNode(0);
ListNode head = rel;
while(l1 != null && l2 != null) {
ListNode temp = new ListNode(0);
if (l1.val > l2.val) {
temp.val = l2.val;
rel.next = temp;
l2 = l2.next;
}else {
temp.val = l1.val;
rel.next = temp;
l1 = l1.next;
}
rel = rel.next;
}
if (l1 != null) {
rel.next = l1;
}
if (l2 != null) {
rel.next = l2;
}
return head.next;
}
}