合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表。
示例:
输入:[1->4->5,1->3->4,2->6]
输出: 1->1->2->3->4->4->5->6
思路:最简单的方法,把所有链表的元素添加到集合中,对集合进行排序后,创建一个新的有序链表输出。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeKLists(ListNode[] lists) {
List<Integer> list = new ArrayList<>();
for(int i=0;i<lists.length;i++){
while(lists[i]!=null){
list.add(lists[i].val);
lists[i]=lists[i].next;
}
}
Collections.sort(list);
if(list.size()==0) {
return null;
}
ListNode node = new ListNode(list.get(0));
ListNode p = node;
for(int i=1;i<list.size();i++){
node.next=new ListNode(list.get(i));
node=node.next;
}
return p;
}
}
执行用时 :10 ms, 在所有 Java 提交中击败了39.39%的用户
内存消耗 :41.3 MB, 在所有 Java 提交中击败了54.74%的用户