题目描述
假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?
Example 1:
Input: n = 3
Output: 3
Explanation:
1) 1, 1, 1
2) 1, 2
3) 2, 1
total 3.
Example 2:
Input: n = 1
Output: 1
Explanation:
only 1 way.
题解
考虑最后一步走1阶还是走2阶。
方案数Dp[n] = 最后一步走1阶的方案数 + 最后一步走2阶的方案数。
Dp[n] = Dp[n-1] + Dp[n-2].
对于大厂面试中高频出现的经典题,我们需要了解它的不同解法,有的大厂不喜欢你一上来就秒掉题目,而更重视你一步步根据题目优化解法,最后得到最优解的解题思路和过程。
另外即使运气真的很不好碰到了新题,做过的高频题也会激发你解题的思路。
public class Solution {
public int climbStairs(int n) {
if (n <= 1) {
return n;
}
int last = 1,