题解 | #跳台阶#
跳台阶
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; }
牛客算法题 文章被收录于专栏
牛客算法题记录