House RobberII 高频题
Page 1 of 1
House RobberII 高频题
public int rob(int[] nums) {
int n = nums.length;
if (n == 0) return 0;
if (n == 1) return nums[0];
return Math.max(robBetween(nums, 0, n - 2), robBetween(nums, 1, n - 1));
}
public int robBetween(int[] nums, int start, int end) {
int prepre = 0;
int pre = nums[start];
for (int i = start + 1; i <= end; i++) {
int cur = Math.max(prepre + nums[i], pre);
prepre = pre;
pre = cur;
}
return pre;
}
int n = nums.length;
if (n == 0) return 0;
if (n == 1) return nums[0];
return Math.max(robBetween(nums, 0, n - 2), robBetween(nums, 1, n - 1));
}
public int robBetween(int[] nums, int start, int end) {
int prepre = 0;
int pre = nums[start];
for (int i = start + 1; i <= end; i++) {
int cur = Math.max(prepre + nums[i], pre);
prepre = pre;
pre = cur;
}
return pre;
}
Page 1 of 1
Permissions in this forum:
You cannot reply to topics in this forum
|
|