题目要求:
分析:
这道题目很显然,要么用递归,要么用动态规划。这里我选择用动态规划。
由于爬楼梯,要么爬一步,要么爬两步,总共只有两种方法。这道题目跟之前机器人走路的题目也差不多,那么它现在走到的这个台阶,要么与它下面一个台阶有关,要么与它下面的第二个台阶有关,设置一个数组,名为count,假设此时count的坐标为i,则count[i] = count[i - 1] + count[i - 2]。至此,此题迎刃而解。
具体代码如下:
class Solution {
public int climbStairs(int n) {
int[] count = new int[n];
count[0] = 1;
if(n == 1)
return 1;
count[1] = 2;
for(int i = 2; i < n; i ++) {
count[i] = count[i - 1] + count[i - 2];
}
return count[n - 1];
}
}