题解 | #跳台阶#
跳台阶
http://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4
JavaScript:部分参考https://blog.nowcoder.net/n/bd31ad8896db41a6882756245cc3930b?f=comment
解法一:直接递归 205*8344
function jumpFloor(number)
{
if (number<=1) return 1;
return jumpFloor(number-1) + jumpFloor(number-2);
}解法二:记忆化搜索---(不完全理解)51*8004
能减少计算,降低时间复杂度。
解法一的改进,通过数组dp将计算过的保存下来。
function jumpFloor(number)
{
let dp = new Array()
return fib(number,dp)
}
function fib(n,dp){
// dp.length = n
if (n<=1) return 1;
if(dp[n] != undefined) return dp[n]
return dp[n] = fib(n-1,dp) + fib(n-2,dp);
}解法三:动态规划
解法二是从上往下递归,然后再从下往上回溯,次方法直接从下往上求得答案
2、53*8012
function jumpFloor(number)
{
if(number ==0 || number ==1)return number;
let a = 1, b = 1, c;
for(let i = 2; i<=number; ++i){
c = a + b;
a = b;
b = c;
}
return c;
} 牛客算法题 文章被收录于专栏
牛客算法题记录

