动态规划
class Solution {
public int numWays(int n) {
if (n == 0 || n == 1) return 1;
int[] dp = new int[n + 1];
dp[0] = 1;
dp[1] = 1;
for (int i = 2; i <= n; i++) {
dp[i] = (dp[i - 1] + dp[i - 2]) % 1000000007;
}
return dp[n];
}
}
class Solution {
public int numWays(int n) {
// 处理边界条件
if (n == 0 || n == 1) {
return 1;
}
// 定义模数
int mod = 1000000007;
// 初始化 dp[i-1] 和 dp[i-2] 的值
int prev1 = 1;
int prev2 = 1;
int curr = 0; // 记录当前 dp[i] 的值
for (int i = 2; i <= n; i++) {
// 计算当前 dp[i] 的值
curr = (prev1 + prev2) % mod;
// 更新 prev1 和 prev2 的值
prev2 = prev1;
prev1 = curr;
}
// 返回 dp[n] 的值
return curr;
}
}