Menu
CoddyTech

Koko Eating Bananas

中等二分查找python iconjava iconcpp iconc iconjs icon+10

Koko 有 n 堆香蕉,第 i 堆有 piles[i] 根香蕉,她有 h 小时。她选择一个进食速度 k,也就是每小时吃整数根香蕉,并保持这个速度不变。每小时她从一堆香蕉中吃掉 k 根;如果这堆剩下的香蕉不到 k 根,她就吃完这堆,然后休息到这一小时结束。请返回能让她在 h 小时内吃完所有香蕉的最小 k。

函数

minEatingSpeed(piles: integer-array, h: integer) → integer
pilesinteger-array
每堆香蕉的数量
hinteger
Koko 拥有的小时数
返回值integer
能在 h 小时内吃完每一堆香蕉的最小整数进食速度,单位为根香蕉每小时

约束条件

  • 1 ≤ piles.length ≤ 5000
  • 1 ≤ piles[i] ≤ 109
  • piles.length ≤ h ≤ 109,因此答案始终存在。

示例

输入
piles = [4, 10, 7, 3]h = 6
输出
5
解释
速度为 5 时,4、10、7 和 3 这些堆分别需要 1、2、2 和 1 小时:总共 6 小时,符合要求。速度为 4 时,它们分别需要 1、3、2 和 1 小时,总共 7 小时。
challenge icon

进阶

孪生题:Koko 按顺序吃完整堆香蕉,每天最多吃 k 根,并在 d 天内吃完。最小的 k 是多少?你的搜索需要做哪些改变?

重置代码
def minEatingSpeed(piles, h):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

piles = [4, 10, 7, 3]
h = 6

预期输出

5