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:
这道题目是之前拿到 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