leetcode第21题

简介: 总递归看起来,两个字,优雅!但是关于递归的时间复杂度,空间复杂度的求法,先留个坑吧。

image.png

合并两个有序链表。

解法一 迭代

遍历两个链表。

publicListNodemergeTwoLists(ListNodel1, ListNodel2) {
ListNodeh=newListNode(0);
ListNodeans=h;
while (l1!=null&&l2!=null) {
if (l1.val<l2.val) {
h.next=l1;
h=h.next;
l1=l1.next;
        } else {
h.next=l2;
h=h.next;
l2=l2.next;
        }
    }
if(l1==null){
h.next=l2;
    }
if(l2==null){
h.next=l1;
    } 
returnans.next;
}

时间复杂度:O(m + n)。

空间复杂度:O(1)。

解法二 递归

参考这里

ListNodemergeTwoLists(ListNodel1, ListNodel2) {
if(l1==null) returnl2;
if(l2==null) returnl1;
if(l1.val<l2.val) {
l1.next=mergeTwoLists(l1.next, l2);
returnl1;
    } else {
l2.next=mergeTwoLists(l2.next, l1);
returnl2;
    }
}

时间复杂度:

空间复杂度:

递归看起来,两个字,优雅!但是关于递归的时间复杂度,空间复杂度的求法,先留个坑吧。



相关文章
|
7月前
leetcode-472. 连接词
leetcode-472. 连接词
51 0
|
7月前
leetcode-1219:黄金矿工
leetcode-1219:黄金矿工
84 0
|
7月前
leetcode-475:供暖器
leetcode-475:供暖器
50 0
|
7月前
|
消息中间件 Kubernetes NoSQL
LeetCode 1359、1360
LeetCode 1359、1360
单链表反转 LeetCode 206
单链表反转 LeetCode 206
75 0
leetcode 827 最大人工岛
leetcode 827 最大人工岛
61 0
leetcode 827 最大人工岛
leetcode 283 移动零
leetcode 283 移动零
57 0
|
算法
leetcode第45题
时间复杂度:O(n)。 空间复杂度:O(1)。 这里要注意一个细节,就是 for 循环中,i < nums.length - 1,少了末尾。因为开始的时候边界是第 0 个位置,steps 已经加 1 了。如下图,如果最后一步刚好跳到了末尾,此时 steps 其实不用加 1 了。如果是 i < nums.length,i 遍历到最后的时候,会进入 if 语句中,steps 会多加 1 。
109 0
leetcode第45题
|
人工智能 算法
leetcode第41题
对于这种要求空间复杂度的,我们可以先考虑如果有一个等大的空间,我们可以怎么做。然后再考虑如果直接用原数组怎么做,主要是要保证数组的信息不要丢失。目前遇到的,主要有两种方法就是交换和取相反数。
leetcode第41题
leetcode第16题
受到上一题的启发,没有看的,推荐大家可以看一下。我们完全可以先将数组排序,然后先固定一个数字,然后利用头尾两个指针进行遍历,降低一个 O(n)的时间复杂度。 如果 sum 大于 target 就减小右指针,反之,就增加左指针。
leetcode第16题