[leetcode] 23. 合并K个排序链表
Posted ACBingo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[leetcode] 23. 合并K个排序链表相关的知识,希望对你有一定的参考价值。
这个题算是考察代码功底吧,基本功,对变量与引用的理解。
不多说了,思路跟第21题基本一致,只不过从两个换成了多个
class Solution {
public ListNode mergeKLists(ListNode[] lists) {
List<ListNode> listNodes = new ArrayList<>(Arrays.asList(lists));
ListNode ans = new ListNode(Integer.MAX_VALUE);
ListNode k = ans;
while (not_finish(listNodes)) {
int p = choose(listNodes);
ListNode pNode = listNodes.get(p);
k.next = pNode;
pNode = pNode.next;
listNodes.remove(p);
listNodes.add(pNode);
k = k.next;
}
return ans.next;
}
private int choose(List<ListNode> lists) {
int min = Integer.MAX_VALUE;
int p = -1;
for (int i = 0; i < lists.size(); i++) {
if (min >= lists.get(i).val) {
min = lists.get(i).val;
p = i;
}
}
return p;
}
private boolean not_finish(List<ListNode> lists) {
for (int i = lists.size() - 1; i >= 0; i--) {
if (lists.get(i) == null) {
lists.remove(i);
}
}
return lists.size() > 0;
}
}
以上是关于[leetcode] 23. 合并K个排序链表的主要内容,如果未能解决你的问题,请参考以下文章