三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。
示例1:
输入:n = 3输出:4说明: 有四种走法
示例2:
输入:n = 5输出:13
题解:
这道题就是一个爬楼梯的变种题,主要还是爬楼梯的情况,设f(x) = f(x-1) + f(x-2) + f(x-3),然后推断出每个变量的前一个数值,就可以从头开始算了,当然取模的时候我不太懂是怎么取,然后看了题解。。。
/*** @param {number} n* @return {number}*/var waysToStep = function(n) {if (n < 3) {return n;}let dp1 = 1;let dp2 = 2;let dp3 = 4;const base = 1000000007;for (let i = 3; i < n; i++) {const temp = ((dp1 + dp2) % base + dp3) % base;dp1 = dp2;dp2 = dp3;dp3 = temp;}return dp3;};
