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;
        }
    }
}