题目
假设你正在爬楼梯。需要 n
阶你才能到达楼顶。
每次你可以爬 1
或 2
个台阶。你有多少种不同的方法可以爬到楼顶呢?
示例一:
代码语言:javascript复制输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。
1. 1 阶 1 阶
2. 2 阶
示例二:
代码语言:javascript复制输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。
1. 1 阶 1 阶 1 阶
2. 1 阶 2 阶
3. 2 阶 1 阶
tips: 1 <= n <= 45
解题
思路:
本题使用动态规划进行做,每个楼梯的到达方法,其实是等于前面一级楼梯到达的方法数 前面两级楼梯到达的方法数。
解决:
代码语言:javascript复制class Solution {
public int climbStairs(int n) {
//要是楼梯高度为1,就只有一种方式
if(n==1){ //要是高度为1 直接返回1
return 1;
}
//下面使用两个变量记录前面两个阶梯的到达方法次数
//记录最新拥有的记录数的前一个的数目
int previous =1;
//记录最新所在阶梯的方法数目
int now = 1;
for(int i=2;i<=n;i ){
now = now previous;
previous = now-previous;
}
return now;
}
}