当前位置: 首页 > news >正文

2560. 打家劫舍 IV

沿街有一排连续的房屋。每间房屋内都藏有一定的现金。现在有一位小偷计划从这些房屋中窃取现金。

由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋 。

小偷的 窃取能力 定义为他在窃取过程中能从单间房屋中窃取的 最大金额 。

给你一个整数数组 nums 表示每间房屋存放的现金金额。形式上,从左起第 i 间房屋中放有 nums[i] 美元。

另给你一个整数 k ,表示窃贼将会窃取的 最少 房屋数。小偷总能窃取至少 k 间房屋。

返回小偷的 最小 窃取能力。

最小化最大值与最大化最小值,建议使用二分法做
该题的主要思想是遍历nums[i]选择满足条件的最小窃取能力,很自然会想到使用二分法降低时间复杂度。使用二分法遍历每种可能的窃取能力,看看能否满足条件,不满足,移动left或者right。
用f[i]记录nums[0]~nums[i]之间选择的房屋数量。对于每种可能的窃取能力,看看相应的f能否大于或等于k。

class Solution {/**最小化最大值与最大化最小值,建议使用二分法做该题的主要思想是遍历nums[i]选择满足条件的最小窃取能力,很自然会想到使用二分法降低时间复杂度。使用二分法遍历每种可能的窃取能力,看看能否满足条件,不满足,移动left或者right。用f[i]记录nums[0]~nums[i]之间选择的房屋数量。对于每种可能的窃取能力,看看相应的f能否大于或等于k。*/public int minCapability(int[] nums, int k) {int left = 0, right = 0;// 确定rightfor(int num:nums) {right = Math.max(right, num);}// 二分遍历所有的窃取能力while(left+1<right) {int mid = (left+right)>>1;// 满足看看能不能下移if(check(nums, k, mid)) {right = mid;} else {left = mid;}}return right;}public boolean check(int[] nums, int k, int mx) {int cur = 0, prev = 0;// 大于当前窃取能力,不选for(int num:nums) {if(num>mx) {prev = cur;} // 小于当前窃取能力,选else {int tmp = cur;cur = Math.max(cur, prev+1);prev = tmp;}}return cur>=k;}
}
http://www.lryc.cn/news/170219.html

相关文章:

  • java web中部署log4j.xml
  • 【张兔兔送书第一期:考研必备书单】
  • 基于Spring Boot+ Vue的健身房管理系统与实现
  • ThreadLocal线程局部变量
  • C++ Primer (第五版)第一章习题部分答案
  • Python与GUI集成:零基础也能开发国际象棋游戏
  • SaaS软件能保证数据安全吗?
  • 方案:基于AI烟火识别与视频技术的秸秆焚烧智能化监控预警方案
  • phantomjs插件---实现通过链接生成网页截图
  • SpringBoot分页实现查询数据
  • Jetson Xavier NX 与飞控(Pixhawk 4 Mini)实现串口通信
  • 为什么2022年秋招嵌入式开发岗位薪资大涨?
  • 在HTML里,attribute和property有什么区别?
  • 机器学习入门与实践:从原理到代码
  • SpringCloud在idea中一键启动项目
  • VB过程的递归调用,辗转相除法求最大公约数
  • OpenCV(三十九):积分图像
  • 【Electron 拦截请求实现自定义网络处理】
  • Pytest系列-内置标签skip和skipif 跳过测试用例的详细使用(5)
  • 华为云云耀云服务器L实例评测|docker 常用操作命令
  • RJ45网络信号浪涌保护器解决方案
  • SoC性能指标ARM内核运算能力
  • 注册小鲸鱼88888专用网站
  • GitHub平台 Bookget操作
  • Ag-grid实现列拖拽,将列顺序存储到本地(localStorage),加载页面时根据本地保存的顺序修改列表头顺序,避免刷新页面后列顺序恢复原样
  • 常用的linux命令简要说明以及命令全名理解
  • 《Python趣味工具》——自制emoji3
  • 怎么把录音转换成mp3格式
  • 基于遗传算法改进的BP神经网络图像分割,BP神经网络基本原理,遗传算法流程,
  • uni-app 之 文字分两行显示超出用省略号表示