leetCode House Robber II
来源:互联网 发布:淘宝代写毕业论文 编辑:程序博客网 时间:2024/05/18 18:03
题目链接
思路:
因为这里面不可能同时抢第一个房间和最后一个房间。所以,我们可以把问题拆成两个。回归到House Robber I
问题一 第一个到倒数第二个房间采用House Robber I算法
问题二 第二个到最后一个房间采用House Robber I算法
比较大小后返回。。
之所以能够分成这两个问题的原因是
第一个和最后一个房间可以分成如下四种情况
1第一个和这后一个都抢 这不符合题意。问题一,二都不可能得着最优解是同时抢第一个和最后一个的出来的。
2只抢第一个
如果抢第一个,那么一定不能抢最后一个。
在问题一中,如果真的抢第一个可以带来最优解那么问题一会找出来。
3只抢最后一个
如果抢最后一个,那么一定不会抢第一个。
在问题二中,如果真的抢最后一个可以带来最优解那么问题二会找出来。
4两个都不抢 包括在两个子问题中。因为这两个子问题的最优解都可能没抢第一个和最后一个
public class Solution { public int rob(int[] nums) { if(nums.length==0) { return 0; } if(nums.length==1) { return nums[0]; } int resultA=robHelp(nums, 0, nums.length-2); int resultB=robHelp(nums, 1, nums.length-1); return Math.max(resultA, resultB); } public int robHelp(int[] nums,int start,int end) { int unRob=0; int doRob=0; for(int i=start;i<=end;i++) { int temp=unRob; unRob=Math.max(temp,doRob); doRob=temp+nums[i]; } return Math.max(unRob, doRob); }}
0 0
- LeetCode House Robber II
- [LeetCode] House Robber II
- [leetcode] House Robber II
- 【leetcode】House Robber II
- Leetcode: House Robber II
- leetcode House Robber II
- [leetcode] House Robber II
- [LeetCode]House Robber II
- leetcode--House Robber II
- leetcode House Robber II
- LeetCode House Robber II
- leetcode:House Robber II
- Leetcode: House Robber II
- House Robber II -- leetcode
- leetCode House Robber II
- [Leetcode]House Robber II
- Leetcode: House Robber II
- LeetCode House Robber II
- 网络处理1-异步GET请求
- HALCON初步:HDevelop导出C++程序到VS 2013
- Could not inspect the application package解决办法
- Spring MVC详解(二)Spring Web MVC是什么
- html5 时间格式的问题
- leetCode House Robber II
- 条件判断
- UITableViewCell 的重叠
- gdb和bochs联调linux-0.11内核
- Spring MVC详解(三)DispatcherServlet作用
- Android的来由
- 网络处理2-异步POST请求和同步请求
- ARM调用规范
- android搭建环境错误 daemon not running. starting it now on port 5037 ADB server didn't ACK