合并k个有序链表 python_leetcode第23题-合并K个有序链表
題目:
合并?k個排序鏈表,返回合并后的排序鏈表。請分析和描述算法的復(fù)雜度。
示例:輸入:
[
1->4->5,
1->3->4,
2->6
]
輸出: 1->1->2->3->4->4->5->6?
分析:
和合并兩個鏈表差不多,采用歸并排序那種分治思想,兩兩排序,合并
答案:public static ListNode mergeKLists(ListNode[] lists) {
if(lists.length==0){
return null;
}
return mergeKLists(lists,0,lists.length-1);
}
public static ListNode mergeKLists(ListNode[] lists,int low,int high) {
if(low==high){
return lists[low];
}
int mid=low+((high-low)>>1);
ListNode node1=mergeKLists(lists,low,mid);
ListNode node2=mergeKLists(lists,mid+1,high);
return mergeTwoLists(node1,node2);
}
public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null) {
return l2;
}
else if (l2 == null) {
return l1;
}
else if (l1.val < l2.val) {
l1.next = mergeTwoLists(l1.next, l2);
return l1;
}
else {
l2.next = mergeTwoLists(l1, l2.next);
return l2;
}
}
總結(jié)
以上是生活随笔為你收集整理的合并k个有序链表 python_leetcode第23题-合并K个有序链表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 精华推荐 |【开发百宝箱之猿如意使用指南
- 下一篇: 早报:阿里巴巴公布三季度财报 苹果将支持