import java.util.*;
public class Solution {
public ListNode mergeKLists(ArrayList<ListNode> lists) {
if (lists.size() == 0 || lists == null) return null;
if (lists.size() == 1) return lists.get(0);
//主要采用每两两合并 当合并成一个后 就是最终结果
while (lists.size() > 1) {
int index = 0 ;
for (int i = 0 ; i < lists.size() - 1 ; i ++) {
ListNode l1 = lists.get(i);
ListNode l2 = lists.get(i + 1);
if (l1 != null && l2 != null)
lists.set(index++, s(l1, l2));
else if (l1 != null && l2 == null)
lists.set(index++, l1);
else if(l1 == null && l2 != null)
lists.set(index++, l2);
lists.remove(i + 1);
}
}
return lists.get(0);
}
public ListNode s(ListNode list1, ListNode list2) {
ListNode head = new ListNode(0);
ListNode res = head;
while (list1 != null && list2 != null) {
if (list1.val >= list2.val) {
head.next = list2;
list2 = list2.next;
} else {
head.next = list1;
list1 = list1.next;
}
head = head.next;
}
head.next = list1 == null ? list2 : list1;
return res.next;
}
}
冲 ~ 牛客网_BM5 合并k个已排序的链表
最新推荐文章于 2024-07-22 16:27:42 发布