题解:
class Solution {
public int climbStairs(int n) {
if (n <= 2) return n;
int[] dp = new int[n + 1];//定义数组dp
dp[1] = 1;//爬1个台阶有一种方法
dp[2] = 2;//爬2个台阶有两种方法
for (int i = 3; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
}
}
知识点:
动态规划思想
类似于斐波那切数列
1.dp[i]和i的含义:爬到第i层有dp[i]种方法
2.确定递推公式:dp[i]=dp[i-1]+dp[i-2]
3. 走到n阶的方法数只与前两个台阶的方法数相关,走到n-1阶,那么就有dp[i-1]的方法数,此时再走一步就能到n阶;走到n-2阶,那么就有dp[n-2]的方法数,此时只要走两步就能到n阶,题中只提供一次走1阶或2阶
4. java中数组的创建及初始化
(1)数组的创建
type [ ] 数组名 = new type [N] type:表示数组名
type [ ]: 表示数组的类型
N :表示数组的长度