一、题目
二、思路
- 这题思想主要是先找到最小值,并不断将剩下的较小值接到最小值后面,这样就完成了排序好的链表;
- 为了实现这个逻辑,可以采用递归和迭代的方法,两种方法操作其实差不多,主要是理解上差别较大;
- 解法一(递归):不管是一开始 list1 或 list2 就为空,还是递归过程中一方为空,因为链表是经过排序的,且递归操作会保证永远是较小的数接在链表后,所以一旦一方为空,直接将另一个链表接在非空链表的后面即可保证递归正确,无需考虑空指针问题;
- 解法二(迭代):暂无
三、解法
解法一
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
if (list1 == null) {
return list2;
} else if (list2 == null) {
return list1;
} else if (list1.val < list2.val) {
list1.next = mergeTwoLists(list1.next, list2);
return list1;
} else {
list2.next = mergeTwoLists(list1, list2.next);
return list2;
}
}
}