失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 学渣的刷题之旅 leetcode刷题 70.爬楼梯(动态规划)

学渣的刷题之旅 leetcode刷题 70.爬楼梯(动态规划)

时间:2021-10-17 12:03:09

相关推荐

学渣的刷题之旅 leetcode刷题 70.爬楼梯(动态规划)

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

输入: 2

输出: 2

解释: 有两种方法可以爬到楼顶。

1 阶 + 1 阶2 阶

输入: 3

输出: 3

解释: 有三种方法可以爬到楼顶。

1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶

我的c++代码

class Solution {public:int climbStairs(int n) {vector<int> result;result.push_back(1);result.push_back(2);if(n>2){for(int i=2;i<n;i++){result.push_back(result[i-1]+result[i-2]);}}return result[n-1];}};

爬n阶台阶很难直接算出,但是由于一次只能爬1或2个台阶,所以可以转化成:

爬 n 阶台阶=爬 n-1 阶楼梯+爬 1 个台阶;

爬 n 阶台阶=爬 n-2 阶楼梯+爬 2 个台阶;

那么

爬 n 阶台阶的方法=爬 n-1 阶楼梯的方法+爬 n-2 阶楼梯的方法;

这里使用数组对爬n阶台阶的方法进行存储。

因为在整个爬台阶过程中,我们比较好确定的是爬 1 、2 阶的方法数量。

通过递推关系,一步一步求解爬 n 阶台阶的方法总数。

如果觉得《学渣的刷题之旅 leetcode刷题 70.爬楼梯(动态规划)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。