你是一名专业强盗,计划抢劫一条街上的房屋。每个房屋都存有一定数量的钱,唯一阻止你抢劫他们的限制是相邻的房屋都连接着安保系统,如果同一晚上两个相邻的房屋被闯入,它会自动联系警察。
给定一个非负整数列表代表每个房屋的金额,请确定今晚你可以在不引起警察注意的情况下抢到的最大金额。
示例1:
输入:[1,2,3,1]
输出:4
说明:抢劫第1个房子(金额=1),然后抢劫第3个房子(金额=3)。你可以抢到的总金额为1+3=4。
示例2:
输入:[2,7,9,3,1]
输出:12
说明:抢劫第1个房子(金额=2),抢劫第3个房子(金额=9)和抢劫第5个房子(金额=1)。你可以抢到的总金额为2+9+1=12。
当数组长度为奇数时,如何处理这种逻辑? 我们可以这样做,即使对于偶数长度的数组,输出也是正确的。
给定一个非负整数列表代表每个房屋的金额,请确定今晚你可以在不引起警察注意的情况下抢到的最大金额。
示例1:
输入:[1,2,3,1]
输出:4
说明:抢劫第1个房子(金额=1),然后抢劫第3个房子(金额=3)。你可以抢到的总金额为1+3=4。
示例2:
输入:[2,7,9,3,1]
输出:12
说明:抢劫第1个房子(金额=2),抢劫第3个房子(金额=9)和抢劫第5个房子(金额=1)。你可以抢到的总金额为2+9+1=12。
class Solution {
public int rob(int[] nums) {
int sim=0;
int sum=0;
int i,j;
for(i=0;i<nums.length;i++,i++){
sim+=nums[i];
}
for(j=1;j<nums.length;j++,j++){
sum+=nums[j];
}
int r= Math.max(sim,sum);
return r;
}
}
当数组长度为奇数时,如何处理这种逻辑? 我们可以这样做,即使对于偶数长度的数组,输出也是正确的。
nums
,你的代码只关心构建索引的总和。 - Tom