你是一名职业强盗,计划抢劫街道上的房屋。每栋房子都藏有一定数量的钱,唯一阻止你抢劫的限制是相邻的房子都有安全系统连接,如果相邻的两栋房子在同一天晚上被闯入,它会自动联系警方。
给定一个代表每栋房子的金额的整数数组 nums,返回今晚你可以在不报警的情况下抢劫的最大金额。
示例1:
输入:nums = [1,2,3,1]
输出:4
说明:抢夺 1 号房屋(金钱 = 1),然后抢夺 3 号房屋(金钱 = 3)。
您可以抢劫的总金额 = 1 + 3 = 4。
示例2:
输入:nums = [2,7,9,3,1]
输出:12
说明:抢劫房屋 1(金钱 = 2)、抢劫房屋 3(金钱 = 9)和抢劫房屋 5(金钱 = 1)。
您可以抢劫的总金额 = 2 + 9 + 1 = 12。
限制:
1
0
原始页面
public int rob(int[] nums) { int[] dp = new int[nums.length+1]; dp[1] = nums[0]; for(int i=2; i<dp.length; i++){ dp[i] = Math.max(dp[i-2]+nums[i-1], dp[i-1]); } // System.out.println(Arrays.toString(dp)); return dp[dp.length-1]; }
以上是LeetCode Day动态编程的详细内容。更多信息请关注PHP中文网其他相关文章!