题解 | #合并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类
     */
    private ListNode merge(ListNode pHead, ListNode qHead) {
        ListNode dummy = new ListNode(-1), i = pHead, j = qHead, pre = dummy;

        while(i != null && j != null) {
            if(i.val > j.val) {
                pre.next = j;
                j = j.next;
            }
            else {
                pre.next = i;
                i = i.next;
            }
            pre = pre.next;
        }

        if(i != null) pre.next = i;
        if(j != null) pre.next = j;
        return dummy.next;
    }

    public ListNode mergeKLists (ArrayList<ListNode> lists) {
        // write code here
        if(lists.size() == 0) return null;
        if(lists.size() == 1) return lists.get(0);
        if(lists.size() == 2) return merge(lists.get(0), lists.get(1));

        int len = lists.size(), mid = len >> 2;
    
        ArrayList<ListNode> arr = new ArrayList();
        ArrayList<ListNode> arr1 = new ArrayList();
        ArrayList<ListNode> res = new ArrayList();


        arr.addAll(lists.subList(0, mid+1));
        arr1.addAll(lists.subList(mid+1, len));

        res.add(mergeKLists(arr));
        res.add(mergeKLists(arr1));

        return mergeKLists(res);
    }
}

归并排序嘛

全部评论

相关推荐

点赞 评论 收藏
分享
NBA球星伦纳德:jd是这样的,工作连拧螺丝都算不上
点赞 评论 收藏
分享
多多啊&nbsp;多多啊&nbsp;上来四道算法题算法题直播排序,整体比较简单把对象写出来,然后比较规则写明白就OK了。唯一一道A100%的电车充电如何最省钱,到目的地如何充电的钱最少,路上有充电站,每个电站价格不一样。用了DP来做,但感觉是贪心的样子,最后没招了,把不能到的情况给干了出来,过了8%日志分析纠错,滑动窗口,但我最后结果永远少一,过了15%没看,力竭了燃尽了多多&nbsp;以后牛客不用后台找我了,笔试夯爆了
淮竹c:不好意思,打扰大家🙏我是一个拼多多骑手,小电驴的最大电量为C,我的最大电量有1e9这么promax😭😭😭需要从x=0处走到x=L,L足足有1e9那么长处,途中有n个充电站,🙏🙏每个充电站的距离和电价分别为di和pi,初始电量是满的😭😭😭请告诉我到达终点最少要花多少钱😭😭😭求求大家把这些钱转给我
查看2道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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