💛题目描述:

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

🧡解题思路:

  • 这道题是一道典型的动态规划解决的问题,与7.斐波那契数列的解法几乎一模一样,对于斐波那切数列我们需要知道其第0位为0,第一位为1,而这道题为了后序的方便计算其第0位为1,第1位为1
  • 解题的思路就是如果我们要跳上第n个台阶,我们可以从第n-1个跳上去也可以从第n-2个跳上去,所以最终要跳上第n个台阶我们可以,f(n) = f(n-1) + f(n-2),也就是将可以跳到第n-1阶台阶的方法加上可以跳到第n-2阶台阶的方法
  • 我们也可以用两个指针来替换数组

💚解题代码:

  1. 🧡💛💚💙
  2. function jumpFloor(number)
  3. {
  4. // write code here
  5. const res = [1,1]; // 索引是对应的台阶数
  6. for(let i = 2;i <= number;i++) {
  7. res[i] = res[i-1] + res[i-2];
  8. }
  9. return res[res.length - 1];
  10. }