美文网首页
leetCode之递归

leetCode之递归

作者: Benzic | 来源:发表于2020-09-26 21:06 被阅读0次

    首页目录 点击查看

    第一题

    • 难度:简单
    • 题目:21. 合并两个有序链表
      将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
      示例:
    输入:1->2->4, 1->3->4
    输出:1->1->2->3->4->4
    

    解题思路

    • 这道题考的是递归,将链表拼接返回。

    我的答案

    var mergeTwoLists = function (l1, l2) {
                if (l1 === null) {
                    return l2
                } else if (l2 === null) {
                    return l1
                } else if (l1.val < l2.val) {
                    l1.next = mergeTwoLists(l1, l2.next)
                    return l1
                } else {
                    l2.next = mergeTwoLists(l1.next, l2)
                    return l2
                }
            };
    
    image.png

    第二题

    示例

    输入: 2.00000, 10
    输出: 1024.00000
    
    输入: 2.10000, 3
    输出: 9.26100
    
    输入: 2.00000, -2
    输出: 0.25000
    解释: 2-2 = 1/22 = 1/4 = 0.25
    

    解题思路

    • 这道题用递归的方式做的,如果是负数就取1/次方乘积

    我的答案

    var myPow = function (x, n) {
        if (n === 0) {
            return 1
        }
        if (n % 2) {
            return x * myPow(x, n - 1)
        }
        if (n < 0) {
            return 1 / myPow(x, -n)
        }
        return myPow(x * x, n / 2)
    };
    
    • 时间复杂度:O(logN)
    • 空间复杂度: O(1)


      image.png

    相关文章

      网友评论

          本文标题:leetCode之递归

          本文链接:https://www.haomeiwen.com/subject/vgzuyktx.html