剑指Offer题目笔记20(在数组范围内二分查找)

面试题72:

面试题72

问题:

​ 输入一个非负整数,计算它的平方根。

解决方案:
  1. 使用二分查找。一个数x的平方根一定小于或等于x,同时,除了0之外的所有非负整数的平方根都大于等于1,故该数的平方根在1到x的范围内。
  2. 定义left为1作为左边界,right为x作为右边界。取该范围内的中间数字m,并判断m是否小于x/m,如果m小于x/m,那么继续判断(m+1)是否大于x/(m+1),如果(m+1)大于x/(m+1),那么返回m,如果(m+1)不大于x/(m+1),那么目标值位于数组后半部分。如果m大于或等于x/m,那么目标值位于数组前半部分。
源代码:
class Solution {public int mySqrt(int x) {int left = 1;int right = x;while(left <= right){int mid = (left + right)/2;//if(mid <= x/mid){if(mid + 1 > x/(mid + 1)){return mid;}left = mid + 1;}else{right = mid - 1;}}return 0;}
}

面试题73:

面试题73

问题:

​ 门卫走开H小时,有n堆香蕉,狒狒去吃香蕉,狒狒一个小时只能吃一堆香蕉,狒狒要在门卫回来前将香蕉吃完,问狒狒每个小时至少得吃多少根香蕉。

解决方案:
  1. 使用二分查找。狒狒吃香蕉的速度的范围在1和数组中的最大值(也就是n堆香蕉的最大值)记为max根。
  2. 在1-max中取中间值mid,求出按照每个小时吃mid根的速度吃完n堆香蕉需要多少小时记为time1,如果time1小于或等于H,那么继续判断mid是否为1,如果是,那么mid就是狒狒每小时吃香蕉速度的最小值。如果mid不为1,那么继续判断以mid-1求出的时间time2与H,如果time2大于H,那么mid就是狒狒每小时吃香蕉速度的最小值。如果time2小于H,那么狒狒吃香蕉的速度还可以慢点。如果time1大于H,那么狒狒吃香蕉的速度应该快些。
源代码:
class Solution {public int minEatingSpeed(int[] piles, int h) {int left = 1;int right = Integer.MIN_VALUE;for (int pile : piles) {right = Math.max(right, pile);}while (left <= right) {int mid = (left + right) / 2;int midTime = getTime(piles, mid);if (midTime <= h) {if (mid == 1 || getTime(piles, mid - 1) > h) {return mid;}right = mid - 1;} else {left = mid + 1;}}return right;}//计算狒狒每个小时吃mid根,所花费的时间private int getTime(int[] piles, int mid) {int time = 0;for (int pile : piles) {time += pile / mid;if (pile % mid != 0) {time++;}}return time;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/586670.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv9有效改进专栏汇总|未来更新卷积、主干、检测头注意力机制、特征融合方式等创新![2024/4/1]

​ 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;助力高效涨点&#xff01;&#xff01;&#xff01; 专栏介绍 YOLOv9作为最新的YOLO系列模型&#xff0c;对于做目标检测的同学是必不可少的。本专栏将针对2024年最新推出的YOLOv9检测模型&#xff0…

什么是智慧城管?智慧城管的应用场景有哪些?

智慧城管管理系统是一种基于现代数字信息技术的城市管理平台&#xff0c;它以数字地图和单元网格划分为基础&#xff0c;集成基础地图、地理编码、市政及社区服务部件事件的多种数据资源。这一系统通过创建城市管理和市民服务综合指挥系统&#xff0c;利用多部门信息共享和协同…

Python中的全栈开发前端与后端的完美融合【第160篇—全栈开发】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Python中的全栈开发&#xff1a;前端与后端的完美融合 全栈开发已成为当今软件开发领域中的…

芒果YOLOv5改进89:卷积SPConv篇,即插即用,去除特征图中的冗余,FLOPs 和参数急剧下降,提升小目标检测

芒果专栏 基于 SPConv 的改进结构,改进源码教程 | 详情如下🥇 👉1. SPConv 结构、👉2. CfSPConv 结构 💡本博客 改进源代码改进 适用于 YOLOv5 按步骤操作运行改进后的代码即可 即插即用 结构。博客 包括改进所需的 核心结构代码 文件 YOLOv5改进专栏完整目录链接:…

透视苹果手机系统文件结构:深入了解iOS文件系统的组织方式

​ 目录 引言 用户登录工具和连接设备 查看设备信息&#xff0c;电池信息 查看硬盘信息 硬件信息 查看 基带信息 销售信息 电脑可对手机应用程序批量操作 运行APP和查看APP日志 IPA包安装测试 注意事项 引言 苹果手机与安卓手机不同&#xff0c;无法直接访问系统文件…

哪个品牌是专业做洗地机的?四大质量翘楚佳品推荐

随着科技的不断发展&#xff0c;家庭清洁方式也在不断升级。传统的拖把已经不能满足现代家庭对清洁的需求&#xff0c;因此&#xff0c;智能家电如洗地机的出现成为了一种必然趋势。本文将为您介绍几款家用洗地机&#xff0c;让您在选择清洁设备时能够更加明智。 洗地机怎么选…

鸿蒙实战开发-如何实现多设备自适应服务卡片

​介绍 本示例展示Js工程中服务卡片的布局和使用&#xff0c;其中卡片内容显示使用了一次开发&#xff0c;多端部署的能力实现多设备自适应。用到了卡片扩展模块接口&#xff0c;ohos.app.form.FormExtensionAbility 。 卡片信息和状态等相关类型和枚举接口&#xff0c;ohos.…

Android adb ime 调试输入法

目录 前言列出所有输入法仅列出输入法 id列出所有输入法的所有信息 启用/禁用 输入法启用输入法禁用输入法 切换输入法还原输入法 前言 安装多个输入法后&#xff0c;可以在设置里进行切换。 既然是开发&#xff0c;能用命令就就命令~ ime 帮助说明&#xff1a; ime <c…

XenCenter 2024 导出虚拟机

选择导出 选择需要导出的虚拟机 导出位置&#xff0c;导出格式&#xff0c;名称 EULA 文档&#xff0c;根据自己需求配置 OVA是否需要加密验证&#xff0c;自己需要看&#xff0c;是否单独的OVA 确认导出配置&#xff0c;等待导出完成。 本地目录查看导出完成

解析Flutter应用在iOS环境中的性能优化技巧

本文探讨了使用Flutter开发的iOS应用能否上架&#xff0c;以及上架的具体流程。苹果提供了App Store作为正式上架渠道&#xff0c;同时也有TestFlight供开发者进行内测。合规并通过审核后&#xff0c;Flutter应用可以顺利上架。但上架过程可能存在一些挑战&#xff0c;因此可能…

2024年限时免费:申领一年免费二级域名

免费申领一年域名 onflashdrive.app&#xff0c;现已可转入 CloudFlare 托管&#xff01; #注册账号 1、打开身份生成网站&#xff0c;然后按照图片下面所填写即可 邮箱填写自己的&#xff0c;密码必须包含大写字母 2、选择 New orders 3、点击选择产品–>Domain 4、输入…

C++之智能指针std::unique_ptr与std::make_unique分配内存方式总结(二百六十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…