Java 超过98%
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
import java.util.*;
public class Solution {
public ListNode mergeKLists(ArrayList<ListNode> lists) {
if(lists.size() == 0)
return null;
if(lists.size() == 1)
return lists.get(0);
int length = lists.size();
for(int i = 0; i < lists.size()-1; i++){
ListNode l1 = lists.get(i);
ListNode l2 = lists.get(i+1);
ListNode l3 = merge(l1,l2);
lists.remove(l1);
lists.remove(l2);
lists.add(l3);
}
return mergeKLists(lists);
}
// public ListNode mergeTwoLists (ListNode l1, ListNode l2) {
// // write code here
// ListNode head = new ListNode(0);
// ListNode p = head;
// while(l1 != null && l2 != null){
// if(l1.val > l2.val){
// p.next = l2;
// l2 = l2.next;
// p = p.next;
// }
// else{
// p.next = l1;
// l1 = l1.next;
// p = p.next;
// }
// }
// if(l1 != null)
// p.next = l1;
// else
// p.next = l2;
// return head.next;
// }
ListNode merge(ListNode l1, ListNode l2){
if(l1 == null)
return l2;
if(l2 == null)
return l1;
if(l1.val > l2.val){
l2.next = merge(l1,l2.next);
return l2;
}
else{
l1.next = merge(l2,l1.next);
return l1;
}
}
}
京公网安备 11010502036488号