2-207-通过(LeetCode-509)熟悉动态规划的解题步骤

发布时间 2023-04-17 14:03:31作者: 白露~

1. 题目

 

运态规划的定义

 

 

 

动态规划的解题步骤

 

 

2. 解法

2.1 递归
 public static int fibonacci(int n) {
if (n == 0) {
return 0;
}

if (n == 1) {
return 1;
}

return fibonacci(n - 1) + fibonacci(n - 2);
}

2.2 运态规划+递归
public static int fibonacci2(int n, int[] dp) {
if (n == 0) {
dp[0] = 0;
return 0;
}

if (n == 1) {
dp[1] = 1;
return 1;
}

dp[n] = fibonacci2(n - 1, dp) + fibonacci2(n - 2, dp);
return dp[n];
}

2.3 循环
public static int fibonacci3(int n) {

if (n == 0) {
return 0;
}

if (n == 1) {
return 1;
}

int f0 = 0;
int f1 = 1;
int f2 = 0;
for (int i = 2; i <= n; i++) {
f2 = f1 + f0;
f0 = f1;
f1 = f2;

}

return f2;

}

3. 总结