注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
本质上还是DP, 就是算出[0, n - 2] / [1, n - 2]两个,取较大一个即可。- public class Solution {
- int robNonCircle(int[] nums, int start, int end) {
- int a = 0;
- int b = 0;
- for (int i = start; i <= end; ++i) {
- if ((i - start) % 2 == 0) {
- a = Math.max(a + nums[i], b);
- } else {
- b = Math.max(b + nums[i], a);
- }
- }
- return Math.max(a, b);
- }
- public int rob(int[] nums) {
- if (nums.length == 1) {
- return nums[0];
- }
- int n = nums.length;
- return Math.max(robNonCircle(nums, 0, n - 2), robNonCircle(nums, 1, n - 1));
- }
- }
复制代码 |