题目:
https://leetcode-cn.com/problems/merge-k-sorted-lists/
public class _23_MergeKLists { public ListNode mergeKLists(ListNode[] lists) { if(lists.length == 0) { return null; } if(lists.length == 2) { return merge(lists[0],lists[1]); } else if(lists.length == 1) { return lists[0]; } else { int mid = lists.length/2; ListNode[] left = new ListNode[mid]; System.arraycopy(lists,0,left,0,mid); ListNode[] right = new ListNode[lists.length-mid]; System.arraycopy(lists,mid,right,0,lists.length-mid); return merge(mergeKLists(left),mergeKLists(right)); } } public ListNode merge(ListNode l1,ListNode l2) { if(l1 != null && l2 != null) { ListNode l3,head; if(l1.val > l2.val) { head = l3 = l2; l2 = l2.next; } else { head = l3 = l1; l1 = l1.next; } while(l1 != null && l2 != null) { if(l1.val > l2.val) { l3.next = l2; l2 = l2.next; } else { l3.next = l1; l1 = l1.next; } l3 = l3.next; } if (l1 != null) { l3.next = l1; } else { l3.next = l2; } return head; } else if(l1 == null) { return l2; } else { return l1; } } }