leetcode [House Robber]
来源:互联网 发布:ipad pro app 知乎 编辑:程序博客网 时间:2024/06/06 05:13
public class Solution {/* 可以看到下面的解法,正确的解法逻辑是很清晰的,最先想解这题的时候想到每四个房子分为一组, 分别为1+3,2+4,1+4的组合,然后去更新,但是逻辑很不清晰 下面的正确解法中用prevNo,prevYes来模拟了偷盗当前房子可能的情况 */ public int rob(int[] nums) { int res = 0; int prevNo = 0;//用来记录当前房子的左侧邻居没有被偷盗时的盗取总额 int prevYes = 0;//用来记录当前房子的左侧邻居被偷盗时的盗取总额 //采用动态规划,确保到任意房子i时的盗取总额是最大的,后面的房子以前面的为基础,这就是动态规划的主要思想 for(int i = 0; i < nums.length; i++){ //不能通过if(preYes > preNo)这个条件来判断当前房子i的左侧邻居是否被偷盗 int temp = prevNo + nums[i];//用temp来保存若当前房子i的左侧邻居没有被偷盗时,金额发生的变化 //由于当前房子i在可盗取(左侧邻居没有被盗取)时,不一定非要被盗取 //当前房子之后也有两种选择 //更新prevNo(当前房子没有被盗取) prevNo = Math.max(prevYes, prevNo); //更新prevYes(当前房子被盗取) prevYes = temp;//隐含了左侧邻居没有被盗取的情况,因为nums[i]加的是prevNo res = Math.max(prevYes, prevNo);//确保到任意房子i时的盗取总额是最大的,这一句其实没什么意义 } return res; }}
0 0
- 【dp】Leetcode House Robber&& House Robber II
- 【leetcode】House Robber && House Robber II
- LeetCode --- House Robber & House Robber II
- LeetCode OJ House Robber
- Leetcode: House Robber
- Leetcode 198: House Robber
- House Robber - LeetCode
- LeetCode 之 House Robber
- leetcode--House Robber
- [leetcode]47 House Robber
- [LeetCode] House Robber
- LeetCode :House Robber
- [leetcode] House Robber
- [leetcode]House Robber
- [LeetCode]198.House Robber
- LeetCode House Robber题解
- leetcode:House Robber
- [LeetCode]House Robber
- Matlab车牌识别系统
- 经典查找算法
- chardet==>探别编码问题
- Android Animation
- C++ std::thread 简单的生产者和消费者
- leetcode [House Robber]
- 正则
- vector 容器 用法详解
- 算法导论 基数排序
- 解决JDK版本问题
- 关于Vuex,官方文档笔记
- Allegro铺铜详解
- Java垃圾回收机制
- poj3744——Scout YYF I(概率DP+矩阵快速幂)