LeetCode70.爬楼梯
作者:互联网
LeetCode70.爬楼梯
题目描述
/**
* 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
*
* 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
*
* 注意:给定 n 是一个正整数。
*/
思路分析
- 由题意可知,因为每次只能爬一个或者两个楼梯,所以n个台阶的总共爬行次数应该为n - 1个台阶和n - 2个台阶的爬行次数总和
- 因此可以考虑使用递归,但是对于n比较大的,递归会出现超时
- 可以使用滚动数组的思路,定义三个变量分别保存n个台阶的方法数,n - 1个台阶的方法数,n - 2个台阶的方法数,通过循环,依次重置这三个变量,实现滚动数组的思路
- 源码见下
源码及分析
/**
*
* @param n 要爬楼梯层数
* @return 返回方法的总数
*/
//滚动数组的方法
public int climbStairs(int n) {
//定义变量res保存n个台阶总共可行的方法
//变量pre 和 post表示 n - 1个台阶和 n - 2个台阶总共可行的方法
int pre = 0, post = 0, res = 1;
for (int i = 0; i < n; i++) {
pre = post;
post = res;
//因为每次只能走1或者2个台阶,因此n个台阶总共的方法应该为n - 1个和n - 2个台阶的方法总和
res = pre + post;
}
return res;
}
标签:pre,LeetCode70,台阶,int,res,爬楼梯,post,方法 来源: https://www.cnblogs.com/mx-info/p/14861302.html