根据题目找规律,见下表策略选择
分析:斐波那契数列的变形
1 1 2 3 5 8 ……
本题将第二个数字1换成数字2,形成新的相同算法的数列
1 2 3 5 8 13 ……
AC代码:
public class Solution {
public int climbStairs(int n) {
if(n == 1 || n == 2){
return n;
}
int[] number = new int[n];
number[0] = 1;
number[1] = 2;
for(int i = 2;i<n;i++){
number[i]= number[i-2]+number[i-1];
}
return number[n-1];
}
}
需要注意:如果先创建数组,会报数组下标溢出的错,如图所示,因为可能输入的n是1,没有办法创建大小为2的数组,先用if判断n的值,再创建数组。