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 mergeTwoLists (ListNode[] lists) {
        ListNode cur = lists[0];
        for (int i = 1; i < lists.length; i++) {
            cur = merge(cur, lists[i]);
        }
        return cur;
    }
    public ListNode merge(ListNode listNode1, ListNode listNode2) {
        ListNode cur = new ListNode(-1);
        ListNode result = cur;
        while (listNode1 != null && listNode2 != null) {
            if (listNode1.val > listNode2.val) {
                cur.next = listNode2;
                listNode2 = listNode2.next;
            } else {
                cur.next = listNode1;
                listNode1 = listNode1.next;
            }
            cur = cur.next;
        }
        if (listNode1 != null) {
            cur.next = listNode1;
        }
        if (listNode2 != null) {
            cur.next = listNode2;
        }
        return result.next;
    }
}

本题知识点分析:

1.链表遍历

2.合并链表

3.数组遍历

4.数学模拟

本题解题思路分析:

1.和两个链表合并其实是一样的,只不过这次要遍历完所有链表,一边遍历一边合并。

2.最终返回cur即可

本题使用编程语言: Java