LeetCode[简单] 70. 爬楼梯

时间:2024-10-12 14:48:30

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

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

思路

利用滚动数组

public class Solution {
    public int ClimbStairs(int n) { //滚动数组
        int f0 = 0, f1 = 0, f2 = 1;
        for(int i = 1; i <= n; i++)
        {
            f0 = f1;
            f1 = f2;
            f2 = f0 + f1;
        }
        return f2;
    }
}

复杂度分析

时间复杂度:循环执行 n 次,每次花费常数的时间代价,故渐进时间复杂度为 O(n)。
空间复杂度:这里只用了常数个变量作为辅助空间,故渐进空间复杂度为 O(1)。