问题描述
问题分析
最基础的动态规划问题。状态转移方程如下:
dp[i] = dp[i-1] + dp[i-2];
解法:动态规划
- 时间复杂度:O( n ),其中n表示数组的长度。
- 空间复杂度:O( n ),其中n表示数组的长度。
Java代码
package com.company;
public class Main {
public static void main(String[] args) {
int n = 3;
System.out.println(climbStairs(n));
}
static public int climbStairs(int n) {
int[] dp = new int[n+1];
dp[0] = 1;
dp[1] = 1;
for (int i = 2; i <= n; i++) {
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n];
}
}
结果分析
以上代码的执行结果:
执行时间 | 内存消耗 |
---|---|
0 ms | 32.7 MB |