题解 | #牛群的合并#

牛群的合并

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

  1. 题目考察的知识点

链表的基本操作

  1. 题目解答方法的文字分析

用一个listNode变量ret来维护合并的链表,遍历lists,每一个lists[i]都和ret进行链表的升序合并,最后答案保存到 ret中。

  1. 本题解析所用的编程语言

java

  1. 完整且正确的编程代码
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) {
      	ListNode ret = null;
        for (int i = 0; i < lists.length; ++i) {
            ret = mergeTwoLists(ret, lists[i]);
        }
        return ret;
    }

    public ListNode mergeTwoLists(ListNode ret, ListNode list) {
        if (ret == null || list == null) {
            return ret != null ? ret : list;
        }
        ListNode head = new ListNode(0);
        ListNode tail = head, aPtr = ret, bPtr = list;
        while (aPtr != null && bPtr != null) {
            if (aPtr.val < bPtr.val) {
                tail.next = aPtr;
                aPtr = aPtr.next;
            } else {
                tail.next = bPtr;
                bPtr = bPtr.next;
            }
            tail = tail.next;
        }
        tail.next = (aPtr != null ? aPtr : bPtr);
        return head.next;
    }

}
全部评论

相关推荐

10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务