题目描述:
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
解题思路:
- 这道的意思就是合并 k 个有序链表为 1 个链表
- 合并两条链表想必大家并不陌生,那么 k 条不也是一样吗?
- 每次取其中的两条进行合并,最后返回整个链表
代码如下:
public ListNode mergeKLists(ArrayList<ListNode> lists) {
if(lists.size() == 0 || lists == null)
return null;
ListNode head = lists.get(0);
for(int i = 1; i < lists.size(); i++){
head = merge(head,lists.get(i));
}
return head;
}
public ListNode merge(ListNode head1, ListNode head2){
if(head1 == null)
return head2;
if(head2 == null)
return head1;
ListNode phead = null;
if(head1.val <= head2.val){
phead = head1;
phead.next = merge(head1.next,head2);
}
else
{
phead = head2;
phead.next = merge(head1,head2.next);
}
return phead;
}