Merge pull request #425 from youmark/master
Fix issues in House Robber and Minimum Path Sum sample code
This commit is contained in:
commit
09294c46a7
@ -2415,27 +2415,19 @@ public int climbStairs(int n) {
|
|||||||
定义 dp 数组用来存储最大的抢劫量,其中 dp[i] 表示抢到第 i 个住户时的最大抢劫量。
|
定义 dp 数组用来存储最大的抢劫量,其中 dp[i] 表示抢到第 i 个住户时的最大抢劫量。
|
||||||
|
|
||||||
由于不能抢劫邻近住户,因此如果抢劫了第 i 个住户那么只能抢劫 i - 2 或者 i - 3 的住户,所以
|
由于不能抢劫邻近住户,因此如果抢劫了第 i 个住户那么只能抢劫 i - 2 或者 i - 3 的住户,所以
|
||||||
|
dp[i] = max(dp[i-1], dp[i-2] + nums[i]) <br>
|
||||||
<div align="center"><img src="https://latex.codecogs.com/gif.latex?dp[i]=max(dp[i-2],dp[i-3])+nums[i]"/></div> <br>
|
|
||||||
|
|
||||||
```java
|
```java
|
||||||
public int rob(int[] nums) {
|
public int rob(int[] nums) {
|
||||||
int n = nums.length;
|
int pre2 = 0, pre1 = 0;
|
||||||
if (n == 0) {
|
for (int i = 0; i < nums.length; i++) {
|
||||||
return 0;
|
int cur = Math.max(pre2 + nums[i], pre1);
|
||||||
}
|
|
||||||
if (n == 1) {
|
|
||||||
return nums[0];
|
|
||||||
}
|
|
||||||
int pre3 = 0, pre2 = 0, pre1 = 0;
|
|
||||||
for (int i = 0; i < n; i++) {
|
|
||||||
int cur = Math.max(pre2, pre3) + nums[i];
|
|
||||||
pre3 = pre2;
|
|
||||||
pre2 = pre1;
|
pre2 = pre1;
|
||||||
pre1 = cur;
|
pre1 = cur;
|
||||||
}
|
}
|
||||||
return Math.max(pre1, pre2);
|
return pre1;
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
**强盗在环形街区抢劫**
|
**强盗在环形街区抢劫**
|
||||||
@ -2455,14 +2447,13 @@ public int rob(int[] nums) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private int rob(int[] nums, int first, int last) {
|
private int rob(int[] nums, int first, int last) {
|
||||||
int pre3 = 0, pre2 = 0, pre1 = 0;
|
int pre2 = 0, pre1 = 0;
|
||||||
for (int i = first; i <= last; i++) {
|
for (int i = first; i <= last; i++) {
|
||||||
int cur = Math.max(pre3, pre2) + nums[i];
|
int cur = Math.max(pre1, pre2 + nums[i]);
|
||||||
pre3 = pre2;
|
|
||||||
pre2 = pre1;
|
pre2 = pre1;
|
||||||
pre1 = cur;
|
pre1 = cur;
|
||||||
}
|
}
|
||||||
return Math.max(pre2, pre1);
|
return pre1;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -2514,9 +2505,9 @@ public int minPathSum(int[][] grid) {
|
|||||||
for (int i = 0; i < m; i++) {
|
for (int i = 0; i < m; i++) {
|
||||||
for (int j = 0; j < n; j++) {
|
for (int j = 0; j < n; j++) {
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
dp[j] = dp[j - 1];
|
if (j>0) dp[j] = dp[j - 1];
|
||||||
} else {
|
} else {
|
||||||
dp[j] = Math.min(dp[j - 1], dp[j]);
|
if (j>0) dp[j] = Math.min(dp[j - 1], dp[j]);
|
||||||
}
|
}
|
||||||
dp[j] += grid[i][j];
|
dp[j] += grid[i][j];
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user