实际二分搜索(写出函数,再用二分搜索法找左右边界 画图理解

本文主要是介绍实际二分搜索(写出函数,再用二分搜索法找左右边界 画图理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实际二分搜索(写出函数,再用二分搜索法找左右边界

看到最大值的最小化,左边界,最小化的最大值,右边界

画图理解

爱吃香蕉的珂珂

class Solution {public int minEatingSpeed(int[] piles, int h) {int left=1,right=1000000000;while(left<=right){int mid=(left+right)/2;long hour=f(mid,piles);if(hour>h){left=mid+1;}else if(hour<=h){right=mid-1;}}return left;}long f(int x,int[] piles){long hour=0;for(int i=0;i<piles.length;i++){hour+=(piles[i]+x-1)/x;//向上取整方法}return hour;}
}

运货要通过数组的货物进行left和right的初始化

Left为数组最大值,right为总和,还要注意函数如何些,装货的逻辑

class Solution {public int shipWithinDays(int[] weights, int days) {int left=0,right=0;for(int x:weights){//初始化左右,left为数组最大值,right为数组总和if(x>left){left=x;}right+=x;}while(left<=right){int mid=(left+right)/2;long daysNeed=f(mid,weights);if(daysNeed>days){left=mid+1;}else{right=mid-1;}}return left;}long f(int x,int[] weights){long daysNeed=0;for(int i=0;i<weights.length;){int cap=x;//一次能装多少while(i<weights.length){//装货if(cap<weights[i]) break;else cap-=weights[i];i++;}//装满一次daysNeed++;}return daysNeed;}
}

class Solution {public int splitArray(int[] nums, int k) {int left=0,right=0;for(int x:nums){if(x>left) left=x;right+=x;}while(left<=right){int mid=(left+right)/2;int count=f(mid,nums);if(count<=k){right=mid-1;}else{left=mid+1;}}return left;}int f(int x,int[] nums){int count=0;for(int i=0;i<nums.length;){int cap=x;while(i<nums.length){if(cap<nums[i]) break;else{cap-=nums[i];i++;}}count++;}return count;}
}

这篇关于实际二分搜索(写出函数,再用二分搜索法找左右边界 画图理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079268

相关文章

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Python get()函数用法案例详解

《Pythonget()函数用法案例详解》在Python中,get()是字典(dict)类型的内置方法,用于安全地获取字典中指定键对应的值,它的核心作用是避免因访问不存在的键而引发KeyError错... 目录简介基本语法一、用法二、案例:安全访问未知键三、案例:配置参数默认值简介python是一种高级编

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

Java 枚举的基本使用方法及实际使用场景

《Java枚举的基本使用方法及实际使用场景》枚举是Java中一种特殊的类,用于定义一组固定的常量,枚举类型提供了更好的类型安全性和可读性,适用于需要定义一组有限且固定的值的场景,本文给大家介绍Jav... 目录一、什么是枚举?二、枚举的基本使用方法定义枚举三、实际使用场景代替常量状态机四、更多用法1.实现接