本文主要是介绍每日OJ题_斐波那契dp②_力扣面试题 08.01. 三步问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
力扣面试题 08.01. 三步问题
解析代码
力扣面试题 08.01. 三步问题
面试题 08.01. 三步问题
难度 简单
三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。
示例1:
输入:n = 3 输出:4 说明: 有四种走法
示例2:
输入:n = 5 输出:13
提示:
- n范围在[1, 1000000]之间
class Solution {
public:int waysToStep(int n) {}
};
解析代码
和上一题力扣1137. 第 N 个泰波那契数状态转移方程一样,就是要注意数据溢出。
class Solution {
public:int waysToStep(int n) {const int MOD = 1e9 + 7;if(n <= 2) // 处理边界return n;vector<int> dp(n+1, 1);dp[2] = 2;dp[3] = 4;for(int i = 4; i <= n; ++i){dp[i] = ((dp[i-1] + dp[i-2]) % MOD + dp[i-3]) % MOD;}return dp[n];}
};
这篇关于每日OJ题_斐波那契dp②_力扣面试题 08.01. 三步问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!