198. House Robber
2016-05-11 10:14
330 查看
You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses have security system connected and it
will automatically contact the police if two adjacent houses were broken into on the same night.
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
大意就是求数组中不相邻元素的最大和。
运用动态规划思想,数组从前向后遍历,nums[i]代表到当前为止的最大和,显然nums[0]就是本身的值,到nums[1]时,可以选择不偷,那么收益就是nums[0],如果偷,那么就选择不偷前面一个,受益就是nums[1],所以nums[1]的最大收益就是Math.max(nums[0], nums[1])。
当i>2时, 如果不偷i,那么收益就是nums[i-1]
如果偷了i,那么就不能偷i-1,收益就是nums[i-2]+nums[i],
得出最后的状态方程:nums[i]=Math.max(nums[i-1], nums[i-2]+nums[i])
总结:刚开始做动态规划的题,还不太熟悉,最重要的就是找出递推关系。
will automatically contact the police if two adjacent houses were broken into on the same night.
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
大意就是求数组中不相邻元素的最大和。
运用动态规划思想,数组从前向后遍历,nums[i]代表到当前为止的最大和,显然nums[0]就是本身的值,到nums[1]时,可以选择不偷,那么收益就是nums[0],如果偷,那么就选择不偷前面一个,受益就是nums[1],所以nums[1]的最大收益就是Math.max(nums[0], nums[1])。
当i>2时, 如果不偷i,那么收益就是nums[i-1]
如果偷了i,那么就不能偷i-1,收益就是nums[i-2]+nums[i],
得出最后的状态方程:nums[i]=Math.max(nums[i-1], nums[i-2]+nums[i])
public int rob(int[] nums) { if(nums.length<2){ return nums.length==0? 0:nums[0]; } nums[1]=Math.max(nums[0], nums[1]); for(int i=2; i<nums.length; i++){ nums[i]=Math.max(nums[i-1], nums[i-2]+nums[i]); } return nums[nums.length-1]; }
总结:刚开始做动态规划的题,还不太熟悉,最重要的就是找出递推关系。
相关文章推荐
- 剑指offer之面试题14调整数组顺序使奇数位于偶数前面
- __getattr__ 与动态属性
- HDU3791二叉搜索树(二叉树)
- 如何修改织梦后台左边导航栏目
- CentOS 7 yum方式配置LAMP环境
- Dependency Walker使用说明
- ASP.NET存储过程实现分页效果(三层架构)
- 12c OCP题库解析060-2 对配置了VPD策略的表进行在线重定义
- svn文件被锁住
- 字符串的最小窗口问题
- Butter Knife
- Android Studio运行时gradle错误
- Linux进程间通信——管道
- ios添加图片资源报(ImageAsset)错和警告
- jQuery学习和知识点总结归纳
- 随机打乱一个数组,无重复的获取一定范围内的随机数
- iOS获取UUID,并使用keychain存储
- js中基本操作
- centos常用命令
- css定义超级链接a标签里面的title的样式