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