这题与leetcode#198相似,只是升级为环形房屋,也就是第一个和最后一个也是相邻的。回顾一下简单版解决方案:

class Solution {//leetcode#198代码
public:int rob(vector<int>& nums) {if(nums.empty()) return 0;vector<int> dp(nums.size(),0);dp[0]=nums[0];for(int i=1;i<nums.size();i++){int use_i = i>=2?dp[i-2]+nums[i]:nums[i];int not_i = dp[i-1];dp[i] = max(use_i,not_i);}return dp[nums.size()-1];}
};

环形的屋,也就是说打劫第一家,就不能打劫最后一家,打劫最后一家就不能打劫第一家,因此分两次求最大值,然后整体求最大值。

class Solution {
public:int rob(vector<int>& nums) {if(nums.empty()) return 0;if(nums.size()==1) return nums[0];vector<int> dp(nums.size(),0);dp[0]=nums[0];int res=0;for(int i=1;i<nums.size()-1;i++){int use_i = i>=2?dp[i-2]+nums[i]:nums[i];int no_i = dp[i-1];dp[i] = max(use_i,no_i);}res = dp[nums.size()-2];dp[0]=0;for(int i=1;i<nums.size();i++){int use_i = i>=2?dp[i-2]+nums[i]:nums[i];int no_i = dp[i-1];dp[i] = max(use_i,no_i);}res = max(res,dp[nums.size()-1]);return res;}};

动态规划-leetcode#213 打家劫环形舍相关推荐

  1. Leetcode_6_Dynamic Programming_198,213打家劫室,打家劫室II

    自己写滴~ 198.打家劫室 class Solution {public int rob(int[] nums) {if(nums.length==0) return 0; int[] dp=new ...

  2. 【LeetCode】Day51-打家劫舍 III变形

    题目1 198. 打家劫舍[中等] 题解 第一道自己动手做出来的动态规划,快哭了 class Solution {public int rob(int[] nums) {int n=nums.leng ...

  3. 动态规划——打家劫舍||(Leetcode 213)

    题目选自Leetcode 213. 打家劫舍|| 给定一个代表金额的非负整数数组nums,相邻房间不可偷并且房间是围成一圈的,让我们输出可以偷窃到的最高金额. 题目描述: 解题思路: 这三种情况哪个结 ...

  4. [动态规划] leetcode 10 正则表达式匹配

    [动态规划] leetcode 10 正则表达式匹配 1.题目 题目链接 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 ...

  5. [LeetCode解题报告] LCP 49. 环形闯关游戏

    [LeetCode解题报告] LCP 49. 环形闯关游戏 一. 题目 1. 题目描述 2. 原题链接 二. 解题报告 1. 思路分析 2. 复杂度分析 3. 代码实现 三. 本题小结 四. 参考链接 ...

  6. 42 - 算法 - 198-打家劫舍-动态规划

    // 动态规划 // 当前状态 前两个状态 dp[i] = max(dp[i-2]+num[i] , dp[i-1]) ;using namespace std; class Solution {pu ...

  7. Leetcode 213.大家劫舍II

    打家劫舍II 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相邻的房屋装有相互连通的防盗系统,如果两 ...

  8. 103. Leetcode 213. 打家劫舍 II (动态规划-打家劫舍)

    步骤一.确定状态: 确定dp数组及下标含义 dp数组和房屋数一样大小, dp[i]表示到第i个房屋的时候, 能够偷窃到的最 高金额 步骤二.推断状态方程: 对于当前的dp[i], 有两个方向,取决于能 ...

  9. LeetCode198打家劫社(线性动态规划)

    题目链接:Leetcode198 Code: class Solution {public:int rob(vector<int>& nums) {//dp[i]表示偷盗到第i家获 ...

  10. leetcode打家劫社简单实现--python

    给定一个数组代表每家的金钱: [1, 2, 0, 4, 6] 不可以抢劫相邻两家的金钱, 可以抢劫相隔的两家, 求最大值 1+0+6 = 7 2+4 = 6 max = 7 思路: 动态规划, 遍历数 ...

最新文章

  1. Android - Manifest 文件 详解
  2. 关于Ping命令的问题
  3. 在此iphone上尚未受信任_苹果中国官网开启限购!每款iphone每人限购两部
  4. python标准算术操作符有哪些_在python中的算术操作符
  5. [LeetCode] Generate Parentheses
  6. c++ mmap写入速度_内存管理(24)mmap和缺页中断
  7. java学生管理系统,(史上最全)
  8. Neokylin7安装DM8数据库
  9. 性能测试模型-曲线拐点模型-压力曲线分析图
  10. iphonex蓝牙打不开转圈_iphonex蓝牙一直在转圈
  11. java实现根号n路归并排序
  12. cad怎么倒圆角_学不好CAD怎么办?9个实用的CAD技巧,让你轻松玩转CAD
  13. 用JAVA编写一个水果箱,Java SE 第四章类之间的关系--水果箱编程题
  14. 10分钟教你用python如何正确把妹
  15. WAMP和PHPStorm安装(Win10)
  16. 如何解决汉化英文或翻译其他语言界面和RC出现乱码
  17. ORACLE 11g 修改db_unique_name参数
  18. 以太坊智能合约ganache+truffle集成开发实验
  19. 可视化的对象存储服务
  20. 石家庄ug数控编程培训

热门文章

  1. 如何选择产品关键词?
  2. 关于 IP 属地的一些科普
  3. java 五角星十个坐标_五角星十个点坐标计算
  4. 网页前端设计一般思路
  5. 标签制作软件如何制作圆形标签中的弧形文字
  6. 第十二周 项目一--图基本算法库
  7. 爬虫基本操作+获取豆瓣250top电影信息
  8. php qrcode二维码应用
  9. el-table因为出现垂直滚动条造成多一个td的空白格
  10. canvas实现图片剪切