Skip to content

Commit 583b205

Browse files
author
xutao
committed
提交打劫代码
1 parent feb0f75 commit 583b205

2 files changed

Lines changed: 48 additions & 0 deletions

File tree

Week06/Rob.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
/**
3+
* dp[i]=max(dp[i-2]+nums[i],dp[i-1])
4+
*/
5+
class Rob {
6+
public int rob(int[] nums) {
7+
if (nums == null || nums.length == 0) {
8+
return 0;
9+
}
10+
int a = 0, b = 0, tmp = 0;
11+
for (int i = 0; i < nums.length; i++) {
12+
int temp = b;
13+
b = Math.max(a + nums[i], b);
14+
a = temp;
15+
}
16+
return b;
17+
}
18+
}

Week06/Rob2.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import java.util.Arrays;
2+
3+
/**
4+
* dp[i]=max(dp[i-2]+nums[i],dp[i-1])
5+
* 适当改写一些,只需要计算两个区间的最大值就行了
6+
* 1->n-1
7+
* 0->n-2
8+
*/
9+
class Rob2 {
10+
public int rob(int[] nums) {
11+
if (nums == null || nums.length == 0) {
12+
return 0;
13+
}
14+
if (nums.length == 1) {
15+
return nums[0];
16+
}
17+
return Math.max(robSingle(Arrays.copyOfRange(nums, 0, nums.length - 1)),
18+
robSingle(Arrays.copyOfRange(nums, 1, nums.length)));
19+
}
20+
21+
public int robSingle(int[] nums) {
22+
int a = 0, b = 0, tmp = 0;
23+
for (int i = 0; i < nums.length; i++) {
24+
int temp = b;
25+
b = Math.max(a + nums[i], b);
26+
a = temp;
27+
}
28+
return b;
29+
}
30+
}

0 commit comments

Comments
 (0)