题解 | #牛群的合并#

牛群的合并

https://www.nowcoder.com/practice/d0cb24e1494e4f45a4b7d1a17db0daef

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param lists ListNode类一维数组 
     * @return ListNode类
     */
    public ListNode mergeKLists (ListNode[] lists) {
        // write code here
        int len = lists.length;
        if (len == 0) return null;
        if (len == 1) return lists[0];
        ListNode head = lists[0];
        for (int i = 1; i < len; i++) {
            head = mergeList(head, lists[i]);
        }
        return head;
    }
    private ListNode mergeList(ListNode l1, ListNode l2) {
        if (l1 == null) return l2;
        if (l2 == null) return l1;
        ListNode hair = new ListNode(0), p = l1.val < l2.val ? l1 : l2, q = p == l1 ? l2 : l1, next;
        hair.next = p;
        while (p != null && q != null) {
            while (p.next != null && p.next.val < q.val) p = p.next;
            next = p.next;
            p.next = q;
            p = q;
            q = next;
        }
        return hair.next;
    }
}
  • 根据题意,对于多组链表的合并,可以分解成两个链表的合并
  • 定义两个指针 p、q,分别指向两个链表头节点值的一小、一大
  • 每次将较小值的节点接到较大值的节点后面,依次类推。。
#链表合并#
线性表基础 文章被收录于专栏

链表、递归、栈

全部评论

相关推荐

玉无心❤️:发照片干啥 发简历啊
点赞 评论 收藏
分享
渐好:软光栅真的写明白了吗,既然是软渲那技术栈不应该使用OpenGL,光追和bvh既不算什么高级渲染技术更不应该属于软渲的内容,git那个项目没啥用,建议把前两个项目重新组织一下语言,比如软渲染那个项目 冯着色和msaa、贴图这几项分开写,写的到位点,如果你还学过光追那就单独写出来,如果没把握考官问你答不上来就别写给自己找麻烦,在技术栈那一栏简单提一下自己学过就行,这样杂的放在一起不太严谨,个人愚见.
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务