小编Nav*_*rma的帖子

入室抢劫问题如何做到这一点

你是一名职业强盗,计划抢劫街道上的房屋。每栋房子都藏有一定数量的钱,唯一阻止你抢劫的限制是相邻的房子都连接了安全系统,如果相邻的两栋房子在同一天晚上被闯入,它会自动联系警方。

给定一个代表每栋房子的金额的非负整数列表,确定今晚您可以在不通知警察的情况下抢劫的最大金额。

示例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;
}
}
Run Code Online (Sandbox Code Playgroud)

当数组长度为奇数时如何执行此逻辑?我们可以这样做吗?即使长度相同,输出也是正确的

java arrays algorithm data-structures

4
推荐指数
1
解决办法
2087
查看次数

标签 统计

algorithm ×1

arrays ×1

data-structures ×1

java ×1