Leetcode 213.大家劫舍II
打家劫舍II
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。
示例 1:
输入: [2,3,2]
输出: 3
解释: 你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。
示例 2:
输入: [1,2,3,1]
输出: 4
解释: 你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。
偷窃到的最高金额 = 1 + 3 = 4 。
基本思路:
第一个房屋和最后一个房屋是紧挨着的,说明第一个房屋和最后一个房屋不能同时盗取。我们可以考虑两种情况:
(1)考虑偷取[0, n - 2]的房屋。
(2)考虑偷取[1, n - 1]的房屋。
取上述两种情况的大者即为答案。
1 class Solution { 2 public int rob(int[] nums) { 3 if(nums.length==0) return 0; 4 if(nums.length==1) return nums[0]; 5 int[] leftNums=new int[nums.length-1]; 6 int[] rightNums=new int[nums.length-1]; 7 for(int i=0;i<nums.length-1;i++){ 8 leftNums[i]=nums[i]; 9 } 10 for(int i=1;i<nums.length;i++){ 11 rightNums[i-1]=nums[i]; 12 } 13 int left=kRob(leftNums); 14 int right=kRob(rightNums); 15 return left>right?left:right; 16 } 17 18 public int kRob(int[] nums) { 19 int n=nums.length; 20 if(n==0) return 0; 21 if(n==1) return nums[0]; 22 int[] dp=new int[n]; 23 dp[0]=nums[0]; 24 dp[1]=nums[1]; 25 if(dp[1]<dp[0])dp[1]=dp[0]; 26 for(int i=2;i<n;i++){ 27 dp[i]=dp[i-2]+nums[i]; 28 if(dp[i]<dp[i-1]) dp[i]=dp[i-1]; 29 } 30 return dp[n-1]; 31 } 32 }
转载于:https://www.cnblogs.com/kexinxin/p/10203038.html
Leetcode 213.大家劫舍II相关推荐
- Leetcode_6_Dynamic Programming_198,213打家劫室,打家劫室II
自己写滴~ 198.打家劫室 class Solution {public int rob(int[] nums) {if(nums.length==0) return 0; int[] dp=new ...
- LeetCode实战:环形链表 II
背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a lin ...
- 动态规划——打家劫舍||(Leetcode 213)
题目选自Leetcode 213. 打家劫舍|| 给定一个代表金额的非负整数数组nums,相邻房间不可偷并且房间是围成一圈的,让我们输出可以偷窃到的最高金额. 题目描述: 解题思路: 这三种情况哪个结 ...
- Leetcode 142. Linked List Cycle II
地址:Leetcode 142. linked list Cycle II 问题描述:检测链表是否存在环,是的话返回环入口,否则返回None. 这道题有两个思路,一个是经典的快慢指针的思路,另外一个是 ...
- 【To Do】LeetCode 142. Linked List Cycle II
LeetCode 142. Linked List Cycle II Solution1:我的答案 这道题多次遇到,牢记此解法 这道题要深思一下,快指针和慢指针的速度对比不同,会产生什么不同的结果? ...
- 【??链表】LeetCode 92. Reverse Linked List II
LeetCode 92. Reverse Linked List II Solution1: 参考网址:http://www.cnblogs.com/grandyang/p/4306611.html ...
- LeetCode 445. Add Two Numbers II
LeetCode 445. Add Two Numbers II Solution1:我的答案 利用了栈,这样就不用翻转链表了... /*** Definition for singly-linked ...
- 【重点:BFS】LeetCode 407. Trapping Rain Water II
LeetCode 407. Trapping Rain Water II 博客转载自:http://www.cnblogs.com/grandyang/p/5928987.html [太难了,被智商碾 ...
- C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组
C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在 ...
最新文章
- Metaspace 引起的 FullGC 问题排查过程及解决方案
- 2020-12-11 图片格式互转:base64、PIL Image opencv cv2互转
- bootstrap模态框使用
- 数据结构之希尔排序图文详解及代码(C++实现)
- 《编译原理》第三章知识点
- Oracle新建用户并授权
- 老板怒了,“我们赚钱你们花钱,还总出毛病!”
- 《JAVA与模式》之装修者模式
- java小数换成字符实现加法_第一、二次笔记总结
- DevExpress控件介绍
- .com才是顶级域名,baidu.com是二级域名
- Oracle swap 100%案例分析
- 通过SAXReader解析XML
- 区块链技术介绍PPT
- obs多推流地址_基于腾讯云的OBS 推流
- 【从Northwind学习数据库】汇总查询
- 百度android离线下载,离线宝app下载-百度离线宝 安卓版v1.0.0.0-PC6安卓网
- 独孤思维:赚钱项目的内卷和躺平
- 似然函数、最大似然估计简单理解
- 中冠百年|投资理财,千万不要犯这些错误
热门文章
- 案例:Oracle dul数据挖掘 磁盘损坏dul提取数据文件中表的数据及l
- 最锋利的Visual Studio Web开发工具扩展:Web Essentials详解(转)
- 机器学习中的模型评价、模型选择及算法选择
- c语言中浮点数和整数转换_C中的数据类型-整数,浮点数和空隙说明
- react hooks使用_如何使用Hooks将React类组件转换为功能组件
- npm构建脚本_NPM脚本简介
- python连接数据库,处理数据结果后生成excel文件
- java mvc view_对Springmvc view层的理解
- 零基础参加java培训哪家机构好
- java开发培训中消息中间件的优势有哪些