力扣链表题: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。

时间复杂度与空间复杂度:
在这里插入图片描述

题解方法二:迭代

猜你喜欢

转载自blog.csdn.net/ambitionLlll/article/details/113920703