leetcodeTop100(32) 合并链表数组

给你一个链表数组,每个链表都已经按升序排列。

请你将所有链表合并到一个升序链表中,返回合并后的链表。

示例 1:

输入:lists = [[1,4,5],[1,3,4],[2,6]]
输出:[1,1,2,3,4,4,5,6]
package Top31_40;

import Util.ListNode;

import java.util.ArrayList;
import java.util.List;

// 合并 K 个升序链表
/*
给你一个链表数组,每个链表都已经按升序排列。

请你将所有链表合并到一个升序链表中,返回合并后的链表。

示例 1:

输入:lists = [[1,4,5],[1,3,4],[2,6]]
输出:[1,1,2,3,4,4,5,6]
 */
public class Top32 {
    //方法一 将链表数组转化数据都加入到一个Integer的Arraylist 排序之后,在创建一个链表返回 时间复杂度可空间复杂度都是O(mn)
    public static ListNode mergeKLists(ListNode[] lists) {
        if(lists.length == 0){
            return null;
        }

        List allDataList = new ArrayList<>();
        for(ListNode node:lists){
            while (node!=null){
                allDataList.add(node);
                node = node.next;
            }
        }

        allDataList.sort((s1,s2)->(s1.val-s2.val));
        if(allDataList.size()==0){
            return null;
        }

        ListNode res = new ListNode(0);
        ListNode node = allDataList.get(0);
        for(int i = 0;i

harryptter / LeetcodeTop100 · GitCode

你可能感兴趣的:(算法,链表,算法,java)