您的位置:首页 > 大数据 > 人工智能

LeetCode 70. Climbing Stairs (O(n)时间, O(1)空间实现)

2014-07-12 07:23 429 查看
爬梯子,一次爬1步或2步,欲到达第n步,有几种爬法。

在第i级梯子时,可以从第i-2级梯子爬两次1步;或者从第i-1级梯子爬一次1步。所以dp[i] = dp[i-2] + dp[i-1]. 

其实这是个斐波那契数列。(dp[0], dp[1]初始化为1)

更省空间的做法是设置prev, prevv两个参数,记录前两项的数值,当前项ret = prev + prevv即可。

代码:

class Solution
{
public:
int climbStairs(int n)
{
int prev=1, prevv=1, ret=1;
for (int i = 2; i <= n; ++ i)
{
ret = prev + prevv;
prevv = prev;
prev = ret;
}
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LeetCode C++ 动态规划 DP
相关文章推荐