纪念第一道没有看题解做出来的困难题
分治思想+归并排序实现合并K个排序链表
由于是实现一连串已经排序的链表,所以第一时间想到了归并排序
又由于是实现多个链表的总排序,为了减少时间复杂度又想到了分治思想,这一题中也就是二分法
做了这么多天的题总算有点进步
class Solution {
public ListNode mergeKLists(ListNode[] lists) {
int len = lists.length;
if(lists == null || len == 0) {
return null;
}
//结果数组的头结点
//ListNode res = new ListNode(0);
ListNode res = mergeKLists(lists, 0, len-1);
return res;
}
private ListNode mergeKLists(ListNode[] lists, int left, int right) {
if(left == right) {
System.out.println("=");
return lists[left];
}
int mid = left + (right - left)/2;
ListNode leftList = mergeKLists(lists, left, mid);
ListNode rightList = mergeKLists(lists, mid+1, right);
return mergeSort(leftList, rightList);
}
private ListNode mergeSort(ListN