动态规划-爬楼梯.js
// 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。// 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?// 注意:给定 n 是一个正整数。// 示例 1:// 输入: 2// 输出: 2// 解释: 有两种方法可以爬到楼顶。// 1. 1 阶 + 1 阶// 2. 2 阶// 示例 2:// 输入: 3// 输出: 3// 解释: 有三种方法可以爬到楼顶。// 1. 1 阶 + 1 阶 + 1 阶// 2. 1 阶 + 2 阶// 3. 2 阶 + 1 阶/** * @param {number} n * @return {number} */let cache = { 1: 1, 2: 2, 3: 3 };var climbStairs = function (n) { if(cache[n]) { return cache[n] } var res = climbStairs(n - 1) + climbStairs(n - 2) cache[n] = res return res};
动态规划-泰波那契序列.js
// 泰波那契序列 Tn 定义如下:// T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2// Tn = T(n-3) + T(n-2) + T(n-1)// 给你整数 n,请返回第 n 个泰波那契数 Tn 的值。// 示例 1:// 输入:n = 4// 输出:4// 解释:// T_3 = 0 + 1 + 1 = 2// T_4 = 1 + 1 + 2 = 4// 示例 2:// 输入:n = 25// 输出:1389537// 纯递归解法会超时let cache = {0:0, 1:1, 2:1}var tribonacci = function (n) { if (n == 0) { return 0; } if(cache[n]) { return cache[n] } else { let res = tribonacci(n - 1) + tribonacci(n-2) + tribonacci(n - 3) cache[n] = res return res }};tribonacci(n)