Leetcode[70].爬楼梯

思路

    用f(x)表示爬到第x级台阶的方案数,最后一步可能跨了一级台阶,也可能跨了两级台阶,

    所以状态转移方程式为f(x) = f(x - 1) + f(x - 2)
代码
class Solution {
    public int climbStairs(int n) {
        if(n <= 1){
            return n;
        }
        int[] result = new int[n];
        result[0] = 1;
        result[1] = 2;
        for(int i = 2;i < n;i++){
            result[i] = result[i - 1] + result[i - 2];
        }
        return result[n - 1];
    }
}

可以借助滚动数组思想进行优化

class Solution {
    public int climbStairs(int n) {
        int p = 0, q = 0, r = 1;
    
        for(int i = 1;i <= n;i++){
            p = q;
            q = r;
            r = p + q;

        }
        return r;
    }
}

 

posted @ 2021-03-30 16:44  yfy刷题  阅读(53)  评论(0)    收藏  举报