21 合并两个有序链表
题目
自己初解的思路及问题
自己初解问题时,想到的是递归解法,但是编码过程中出现了l1.val与l1.next未区分的疏忽,后面编码得注意。具体见下方递归题解。
题解方法一:递归
做题之前先总结一些递归的三步骤:
(1)求解基本问题
(2)将大问题如何变成小问题
(3)小问题的解如何变成大问题的解
代码:
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1 == null){
return l2;
}
if(l2 == null){
return l1;
}
if(l1.val < l2.val){
l1.next = mergeTwoLists(l1.next, l2);
return l1;
}else{
l2.next = mergeTwoLists(l2.next, l1);
return l2;
}
}
}
注意比较大小的时候是l1.val与l2val比较
l1.next = mergeTwoLists(l1.next, l2)方法中参数是l1.next,不是l1.val。
时间复杂度与空间复杂度: