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

news2024/11/25 14:37:37

面试题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.coloradmin.cn/o/1554643.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI大模型引领金融创新变革与实践【文末送书-46】

文章目录 AI大模型的定义与特点AI大模型在金融领域的应用 01 大模型在金融领域的 5 个典型应用场景02 大模型在金融领域应用所面临的风险及其防范03 AIGC 技术的科林格里奇困境04 金融机构使用 AIGC 技术的 4 条可能路径AIGC重塑金融&#xff1a;AI大模型驱动的金融变革与实践…

.NET CORE使用Redis分布式锁续命(续期)问题

结合上一期 .NET CORE 分布式事务(三) DTM实现Saga及高并发下的解决方案(.NET CORE 分布式事务(三) DTM实现Saga及高并发下的解决方案-CSDN博客)。有的小伙伴私信说如果锁内锁定的程序或者资源未在上锁时间内执行完&#xff0c;造成的使用资源冲突&#xff0c;需要如何解决。本…

Spring 源码调试问题 ( List.of(“bin“, “build“, “out“); )

Spring 源码调试问题 文章目录 Spring 源码调试问题一、问题描述二、解决方案 一、问题描述 错误&#xff1a;springframework\buildSrc\src\main\java\org\springframework\build\CheckstyleConventions.java:68: 错误: 找不到符号 List<String> buildFolders List.of…

OpenHarmony无人机MAVSDK开源库适配方案分享

MAVSDK 是 PX4 开源团队贡献的基于 MavLink 通信协议的用于无人机应用开发的 SDK&#xff0c;支持多种语言如 C/C、python、Java 等。通常用于无人机间、地面站与通信设备的消息传输。 MAVLink 是一种非常轻量级的消息传递协议&#xff0c;用于与无人机&#xff08;以及机载无…

【Unity】TextMeshPro富文本

启用富文本 在Unity里&#xff0c;如果需要使用富文本&#xff0c;首先需要开启Rich Text 如果不开启Rich Text&#xff0c;就会在UI上显示富文本代码 1.粗体 <b>Game</b> Over2.斜体 <i>Game</i> Over3.下划线 <u>Game</u> Over4…

6个常用的界面原型设计工具,新手小白看!

界面原型设计是现代设计师必备的技能之一。界面原型是设计数字产品或应用程序的重要步骤&#xff0c;将概念转化为具体的互动界面。对于初学者小白来说&#xff0c;选择一款易于使用、功能强大的界面原型设计工具非常重要。本文将介绍 10 种常用的界面原型设计工具&#xff0c;…

基于8086CPU和8255并行接口扩展系统设计

**单片机设计介绍&#xff0c;基于8086CPU和8255并行接口扩展系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于8086CPU和8255并行接口扩展系统设计的主要目的是通过8255并行接口芯片实现对外部设备的并行接口扩展&…

162.乐理基础-和声大调、旋律大调

内容参考于&#xff1a; 三分钟音乐社 上一个内容&#xff1a;161.音程、和弦板块总结、重点、建议 首先需要回忆一下18.调式、自然大调式&#xff08;C大调、D大调。。。&#xff09;与19.音阶是什么、有什么用&#xff0c;在18.调式、自然大调式&#xff08;C大调、D大调。…

代码随想录训练营Day37:● 738.单调递增的数字 ● 968.监控二叉树 ● 总结

738.单调递增的数字 题目链接 https://leetcode.cn/problems/monotone-increasing-digits/description/ 题目描述 思路 从后往前遍历数字的每一位&#xff0c;如果前一位大于后一位&#xff0c;则将其减一&#xff0c;后边的一位取 i-9 中最大的 解答的两点疑惑&#xff1a;…

uniapp 使用命令行创建vue3 ts 项目

命令行创建 uni-app 项目&#xff1a; vue3 ts 版 npx degit dcloudio/uni-preset-vue#vite-ts 项目名称注意 Vue3/Vite版要求 node 版本^14.18.0 || >16.0.0 如果下载失败&#xff0c;请去gitee下载 https://gitee.com/dcloud/uni-preset-vue/repository/archive/vite-ts…

2020年30米二级分类北京市土地利用数据

引言 北京市省土地利用数据产品是指基于Landsat TM/ETM/OLI遥感影像&#xff0c;采用遥感信息提取方法&#xff0c;并结合野外实测&#xff0c;以及参照国内外现有的土地利用/土地覆盖分类体系&#xff0c;经过波段选择及融合&#xff0c;图像几何校正及配准并对图像进行增强处…

上采样技术在语义分割中的应用

目录 概要 一、概述 二、实现方法 1.转置卷积 2.反池化 3.双线性插值法 三、在经典网络中的的应用 1.U-Net 2.FCN 总结 概要 上采样是用于深度学习中提高语义分割精度的技术&#xff0c;可以实现图像放大和像素级别标注 一、概述 神经网络的基本结构为&#xff1a;…

年轻力壮,副业当道:推荐6个热门小副业

#下班后的年轻人第二事业风潮# 热门话题你加入了吗&#xff1f; 如今&#xff0c;年轻人早已摒弃“懒散”的标签&#xff0c;全身心投入到“事业拼搏”之中。然而&#xff0c;自主创业的高投入与风险&#xff0c;让许多年轻人望而却步。于是&#xff0c;副业成为了他们触手可及…

Vue3基础笔记(2)事件

一.事件处理 1.内联事件处理器 <button v-on:click"count">count1</button> 直接将事件以表达式的方式书写~ 每次单击可以完成自增1的操作~ 2.方法事件处理器 <button click"addcount(啦啦啦~)">count2</button> 如上&…

4、Cocos Creator 动画系统

目录 1、Clip 参数 2、动画编辑器 3、基本操作 更改时间轴缩放比例 移动显示区域 更改当前选中的时间轴节点 播放 / 暂停动画 修改 clip 属性 快捷键 4、模拟实验 5、动画事件 6、注意事项 参考 Animation 组件是节点上的一个组件。Clip 动画剪辑就是一份动画的声…

【CTA动画】制作全记录 笔记

3Dxchange的使用 让图片跳舞 导入&#xff1a;I:\安装包\#动画开发\test\跳舞 model(includeTPose).fbx 转成非标准角色 手动点击骨骼&#xff0c;然后点击人物骨骼&#xff0c;选择00_t-pose 绿灯了就可以转换了&#xff0c;记得启用。 上面的自定义可以先选择3DS 转换后…

Stream2Graph论文翻译

Stream2Graph: Dynamic Knowledge Graph for Online Learning Applied in Large-scale Network Abstract 知识图谱(KG)是用于存储某个领域(医疗保健、金融、电子商务、ITOps等)中的知识的有价值的信息来源。大多数工业KG本质上是动态的&#xff0c;因为它们定期更新流数据(客…

如何准备科学海报

科学会议上的海报展示可以为早期职业研究人员提供宝贵的机会来练习他们的沟通技巧&#xff0c;获得有关他们研究的反馈&#xff0c;并扩大他们的网络。“通过与其他研究人员一对一地讨论我的工作&#xff0c;[我发现]我可以确定哪些工作做得好&#xff0c;哪些需要改进&#xf…

LQR的横向控制与算法仿真实现

文章目录 1. 引言2. 车辆运动学线性离散模型3. LQR求解4. 算法和仿真实现 1. 引言 在现代控制理论的领域中&#xff0c;线性二次型调节器&#xff08;Linear Quadratic Regulator&#xff0c;简称LQR&#xff09;被广泛认可为一种高效的优化控制方法。LQR的核心优势在于其能力…

python练习五

1. 给定一个包含n1个整数的数组nums&#xff0c;其数字在1到n之间&#xff08;包含1和n&#xff09;&#xff0c;可知至少存在一个重复的整数&#xff0c;假设只有一个重复的整数&#xff0c;请找出这个重复的数 def find_difnumber(ls):for index in range(0, len(ls)):for n…