Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit a010fb3

Browse files
refactor 198
1 parent 1a52955 commit a010fb3

File tree

1 file changed

+34
-22
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+34
-22
lines changed

src/main/java/com/fishercoder/solutions/_198.java

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,45 @@
22

33
/**198. House Robber
44
5-
You are a professional robber planning to rob houses along a street.
5+
You are a professional robber planning to rob houses along a street.
66
Each house has a certain amount of money stashed,
7-
the only constraint stopping you from robbing each of them is that adjacent houses have security system connected and
8-
it will automatically contact the police if two adjacent houses were broken into on the same night.
9-
10-
Given a list of non-negative integers representing the amount of money of each house,
7+
the only constraint stopping you from robbing each of them is that adjacent houses have security
8+
system connected and it will automatically contact the police if two adjacent houses were broken into on the same night.
9+
Given a list of non-negative integers representing the amount of money of each house,
1110
determine the maximum amount of money you can rob tonight without alerting the police.
11+
12+
Example 1:
13+
Input: [1,2,3,1]
14+
Output: 4
15+
Explanation: Rob house 1 (money = 1) and then rob house 3 (money = 3).
16+
Total amount you can rob = 1 + 3 = 4.
17+
18+
Example 2:
19+
Input: [2,7,9,3,1]
20+
Output: 12
21+
Explanation: Rob house 1 (money = 2), rob house 3 (money = 9) and rob house 5 (money = 1).
22+
Total amount you can rob = 2 + 9 + 1 = 12.
1223
*/
1324
public class _198 {
1425

15-
public int rob(int[] nums) {
16-
if (nums == null || nums.length == 0) {
17-
return 0;
18-
}
19-
if (nums.length == 1) {
20-
return nums[0];
26+
public static class Solution1 {
27+
public int rob(int[] nums) {
28+
if (nums == null || nums.length == 0) {
29+
return 0;
30+
}
31+
if (nums.length == 1) {
32+
return nums[0];
33+
}
34+
if (nums.length == 2) {
35+
return Math.max(nums[0], nums[1]);
36+
}
37+
int[] dp = new int[nums.length];
38+
dp[0] = nums[0];
39+
dp[1] = Math.max(nums[0], nums[1]);
40+
for (int i = 2; i < nums.length; i++) {
41+
dp[i] = Math.max(dp[i - 2] + nums[i], dp[i - 1]);
42+
}
43+
return dp[nums.length - 1];
2144
}
22-
if (nums.length == 2) {
23-
return Math.max(nums[0], nums[1]);
24-
}
25-
int[] dp = new int[nums.length];
26-
dp[0] = nums[0];
27-
dp[1] = Math.max(nums[0], nums[1]);
28-
for (int i = 2; i < nums.length; i++) {
29-
dp[i] = Math.max(dp[i - 2] + nums[i], dp[i - 1]);
30-
}
31-
return dp[nums.length - 1];
3245
}
33-
3446
}

0 commit comments

Comments
 (0)