leetcode打卡day12

合并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%的用户

发布了20 篇原创文章 · 获赞 2 · 访问量 281

猜你喜欢

转载自blog.csdn.net/weixin_46442834/article/details/104829186
今日推荐