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

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

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

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

画图理解

爱吃香蕉的珂珂

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 itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日