题解 | #合并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) {
// write code here
ListNode temp;
ArrayList<Integer> a = new ArrayList<>();
//先将所有节点的值放到一个一维数组中。
for(int i = 0; i < lists.size(); i++){
temp = lists.get(i);
while(temp != null){
a.add(temp.val);
temp = temp.next;
}
}
//进行排序
a.sort(Comparator.comparingInt(i -> i));
ListNode cur = new ListNode(-1);
temp = cur;
//重新构建链表
for (int i : a){
temp.next = new ListNode(i);
temp = temp.next;
}
if(cur.val == -1 && cur.next == null){
return null;
}
return cur.next;
}
}