洞察探索open banking如何通过小程序容器技术助力金融企业实现数据安全和数字化转型
789
2022-10-09
213. House Robber II
Note: This is an extension of House Robber.
After robbing those houses on that street, the thief has found himself a new place for his thievery so that he will not get too much attention. This time, all houses at this place are arranged in a circle. That means the first house is the neighbor of the last one. Meanwhile, the security system for these houses remain the same as for those in the previous street.
Given a list of non-negative integers representing the amount of money of each house, determine the maximum amount of money you can rob tonight without alerting the police.
思路: 第一个element 和最后一个element不能同时出现,则分两次call House Robber I case 1: 不包括最后一个element case 2: 不包括第一个element 两者的最大值即为全局最大值
class Solution { public int rob(int[] nums) { if(nums == null || nums.length == 0) return 0; if(nums.length == 1) return nums[0]; if(nums.length == 2) return Math.max(nums[0], nums[1]); return Math.max(robsub(nums, 0, nums.length - 2), robsub(nums, 1, nums.length - 1)); } private int robsub(int[] nums, int s, int e) { int n = e - s + 1; int[] d = new int[n]; d[0] = nums[s]; d[1] = Math.max(nums[s], nums[s + 1]); for(int i = 2; i < n; i++) { d[i] = Math.max(d[i - 2] + nums[s + i], d[i - 1]); } return d[n - 1]; } }
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~