LeetCode经典——70.爬楼梯&&509.斐波拉契数列

看到题目思绪一下子回到一年前,刚刚准备放弃硬件搞软件

看翁凯的MOOC,会写的第一个递归!哈哈哈

时光过得真快,而我依旧这么菜!!!

递归当然超时:

class Solution {
public:
    int climbStairs(int n) {
        if(n==0||n==1)
            return 1;
        return climbStairs(n-1)+climbStairs(n-2);
    }
};

改用DP:

class Solution {
public:
    int climbStairs(int n) {
        if(n<=2)
            return n;
        vector<int> dp(n+1,0);
        dp[1] = 1;
        dp[2] = 2;
        for(int i=3;i<=n;i++){
            dp[i] = dp[i-1]+dp[i-2];
        }
        return dp[n];
    }
};

斐波拉契数列

有了前面的基础,这个DP就很容易了

class Solution {
public:
    int climbStairs(int n) {
        if(n<=2)
            return n;
        vector<int> dp(n+1,0);
        dp[1] = 1;
        dp[2] = 2;
        for(int i=3;i<=n;i++){
            dp[i] = dp[i-1]+dp[i-2];
        }
        return dp[n];
    }
};

https://send.firefox.com/download/6c8236d1565e58c8/#i7FdEF_GCzTCb_FX4sgVyA

发布了377 篇原创文章 · 获赞 344 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/qq_41895747/article/details/105471788