题解 | #牛群的合并#
牛群的合并
https://www.nowcoder.com/practice/d0cb24e1494e4f45a4b7d1a17db0daef
- 题目考察的知识点
链表的基本操作
- 题目解答方法的文字分析
用一个listNode变量ret来维护合并的链表,遍历lists,每一个lists[i]都和ret进行链表的升序合并,最后答案保存到 ret中。
- 本题解析所用的编程语言
java
- 完整且正确的编程代码
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;
}
}