题解 | #合并k个已排序的链表#TOP5

思路: 自顶向下,这叫归并排序。我们要合并一定范围[start,end]的节点,拆成[start,mid], (mid,end] 两部分节点合并,将这两部分排好序的合并就ok了。然后继续拆解。

 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
import java.util.*;
public class Solution {
    public ListNode mergeKLists(ArrayList<ListNode> lists) {
        if(lists == null || lists.isEmpty()){
            return null;
        }
        //1、新建一个ListNode 然后每次遍历 list.size() 找出最小,时间复杂度 mO(N) 控件复杂度 m
        //2、不断循环遍历 每次 合并2个ListNode
        //3. 类似二分法 从上到下,再从下到上
        return mergeKLists(lists,0,lists.size() - 1);
    }
    public ListNode mergeKLists(ArrayList<ListNode> lists,int low,int high){
        if(high <= low){
            return lists.get(low);
        }
        int mid = low + (high - low) / 2;
        ListNode left = mergeKLists(lists,low,mid);
        ListNode right = mergeKLists(lists,mid + 1,high);
        return mergeTwoLists(left, right);
    }
 
    private ListNode mergeTwoLists(ListNode left, ListNode right){
        if(left == null ){
            return right;
        }
        if(right == null){
            return left;
        }
        ListNode temp = new ListNode(0);
        ListNode currentNode = temp;
        while(left != null && right != null){
            if(left.val < right.val){
                currentNode.next = left;
                left = left.next;
            }else{
                currentNode.next = right;
                right = right.next;
            }
            currentNode = currentNode.next;
        }
        currentNode.next = left == null ? right :left;
        return temp.next;
    }
    
    
    
    
    
}
面试必刷TOP101 文章被收录于专栏

面试必刷TOP101

全部评论

相关推荐

看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗?&nbsp;那对老老实实面试的人岂不是不公平....
程序员牛肉:公平那是对小孩子讲的童话故事,成年人的世界只有能不能接受失败的后果。 你要是能接受面试作弊被发现之后多家公司联合永久拉黑的后果,你就搞。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-01 17:00
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务