题解 | #合并k个已排序的链表#
合并k个已排序的链表
https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param lists ListNode类ArrayList
* @return ListNode类
*/
public ListNode mergeKLists (ArrayList<ListNode> lists) {
if (lists.isEmpty()){
return null;
}
ArrayList<Integer> data = new ArrayList<>();
for (ListNode listNode : lists) {
countList(listNode,data);
}
if (data.size() < 1){
return null;
}
Integer[] datas = data.toArray(new Integer[data.size()]);
Arrays.sort(datas);
ListNode result = new ListNode(datas[0]);
ListNode preNode = null;
for (int i = 1; i < datas.length; i++) {
ListNode temp = new ListNode(datas[i]);
if (i == 1){
result.next = temp;
preNode = temp;
}else {
preNode.next = temp;
preNode = temp;
}
}
return result;
}
public void countList(ListNode listNode,ArrayList<Integer> data){
while (listNode != null){
data.add(listNode.val);
listNode = listNode.next;
}
}
}