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