Skip to content

Latest commit

 

History

History
54 lines (45 loc) · 970 Bytes

70-爬楼梯.md

File metadata and controls

54 lines (45 loc) · 970 Bytes

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

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

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

示例 1:

输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1.  1 阶 + 1 阶
2.  2 阶

示例 2:

输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
1.  1 阶 + 1 阶 + 1 阶
2.  1 阶 + 2 阶
3.  2 阶 + 1 阶

分析

有 1 个台阶 有 1 种方法 有 2 个台阶 有 2 种方法 有 3 个台阶 有 3 种方法 有 4 个台阶 有 5 种方法 .....

得出结论 f(n) = f(n-1) - f(n-2)

代码如下

public int climbStairs(int n) {
    if (n < 3) {
        return n;
    }else {
        int a = 1;
        int b = 2;
        int temp = 0;
        for (int i = 3; i < n+1; i++) {
            temp = a + b;
            a = b;
            b = temp;
        }
    return temp;
    }
}