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即可

京公网安备 11010502036488号