题解 | #合并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; } }