Leetcode - Climbing Stairs

《Leetcode - Climbing Stairs》

My code:

public class Solution {
    public int climbStairs(int n) {
        if (n <= 0)
            return 0;
        int[] dp = new int[n + 1];
        dp[0] = 1;
        dp[1] = 1;
        for (int i = 2; i < dp.length; i++) {
            dp[i] = dp[i - 1] + dp[i - 2];
        }
        return dp[dp.length -1];
    }
}

My test result:

《Leetcode - Climbing Stairs》 Paste_Image.png

这道题目是之前拿到 decode ways 的简单版。不需要考虑,数字不存在的情况。也不需要考虑
dp[1] 等于多少。

总算是自己做出来的DP。第一道。。

**
总结: DP
**

Anyway, Good luck, Richardo!

My code:

public class Solution {
    public int climbStairs(int n) {
        if (n <= 0)
            return 0;
        else if (n == 1)
            return 1;
        else if (n == 2)
            return 2;
        int[] steps = new int[n];
        steps[0] = 1;
        steps[1] = 2;
        for (int i = 2; i < n; i++)
            steps[i] = steps[i - 1] + steps[i - 2];
        return steps[n - 1];
    }
}

easy dp

Anyway, Good luck, Richardo!

差不多的思路。代码就不放了。
其实就是 斐波那契数列。
Discuss里面最好的解法是直接用通项公式。然后会有个问题。
如果求 f(900), 怎么求?
这个时候,用DP的话,答案早就 stack overflow了,所以得换种想法。
有时间可以思考下。

Anyway, Good luck, Richardo! — 08/26/2016

    原文作者:Richardo92
    原文地址: https://www.jianshu.com/p/80fcb5292fbf#comments
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞