剑指 Offer 10- II. 青蛙跳台阶问题
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1
示例 1:
输入:n = 2
输出:2
示例 2:
输入:n = 7
输出:21
示例 3:
输入:n = 0
输出:1
解:
动态规划:
设想 青蛙要跳到x阶,那么他的上一步动作 要么是 上1个台阶 要么是上2个台阶 ,所以他可以从 x-1或x-2 这两个位置到达x阶,那么到达x阶的方式就有:f(x) = f(x-1)+f(x-2) 所以本题就可以转化为求斐波那契数列第 n 项的值。
class Solution { public int numWays(int n) { int a = 1,b = 1,sum = 0; for(int i =0 ; i <n ;i++){ sum = (a+b) % 1000000007; a = b; b = sum ; } return a; } }
本题还可使用 递归和记忆递归 ,但是没有动态规划好用0-0

浙公网安备 33010602011771号