leetCode之递归

首页目录 点击查看

第一题

  • 难度:简单
  • 题目: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

第二题

  • 难度:中等
  • 题目:50. Pow(x, n)
    实现 pow(x, n) ,即计算 x 的 n 次幂函数。

示例

输入: 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之递归)