一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n
级的台阶总共有多少种跳法。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
示例 1:
输入:n = 2 输出:2
示例 2:
输入:n = 7 输出:21
示例 3:
输入:n = 0 输出:1
提示:
0 <= n <= 100
递归肯定过不了吧,不写了。
法一:基本dp
class Solution { public: int numWays(int n) { int f[101] = {0}; f[0] = 1; f[1] = 1; f[2] = 2; for(int i=3; i<=n; i++){ f[i] = (f[i-1]+f[i-2])%(int)(1e9+7); } return f[n]; } };
法二: 滚动数组优化
class Solution { public: int numWays(int n) { int first = 1, second = 1; for(int i=2; i<=n; i++){ int tmp = second; second = (first+second)%(int)(1e9+7); first = tmp; } return second; } };