70. Climbing Stairs
You are climbing a staircase. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
DP入门第一题。DP实质就是cache, 把之前出现过的中间结果记录,下次再出现相同情况的时候,通过DP table可以只用O(1)的时间复杂度得到。
dp[i]表示到达第i层楼梯的不同走法。
那么题目中每次可以选择走一步,或者两步,dp[i] = dp[i-1] - dp[i-2]。
从迭代公式可以知道,base case有两个,dp[0]和dp[1]。
public class Solution {
public int climbStairs(int n) {
if(n<=2) return n;
int[] dp = new int[n];
dp[0] = 1;
dp[1] = 2;
for(int i=2;i<n;i++) {
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n-1];
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。