题目
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意: 给定 n 是一个正整数。
示例 1:
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶
示例 2:
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
5. 1 阶 + 1 阶 + 1 阶
6. 1 阶 + 2 阶
7. 2 阶 + 1 阶
思路
采用递推的思想,我们可以这样想,对于当前的第
i
i
i 级台阶,我们可以从第
i
−
1
i-1
i−1 级台阶到第
i
i
i 级,也可以从
i
−
2
i-2
i−2 级台阶到第
i
i
i 级,那么到达第
i
i
i 级台阶的不同方式就等于到达第
i
−
2
i-2
i−2 和第
i
−
1
i-1
i−1 级台阶的不同方式之和;具体见代码:
代码
public class Solution {
public int climbStairs(int n
) {
int t1
= 1, t2
= 1, ans
= 1;
for (int i
=1; i
<n
; i
++){
ans
= t1
+ t2
;
t1
= t2
;
t2
= ans
;
}
return ans
;
}
public static void main(String
[] args
) {
Solution solution
= new Solution();
int a
= 1;
System
.out
.println(solution
.climbStairs(a
));
}
}