Menu
CoddyTech

Koko Eating Bananas

ふつう二分探索python iconjava iconcpp iconc iconjs icon+10

Kokoはn個のバナナの山を持っており、山iにはpiles[i]本のバナナがあり、使える時間はh時間です。彼女は1時間あたりに食べるバナナの本数kを整数で決め、その速度を保ちます。1時間ごとに、1つの山からk本のバナナを食べます。その山に残っているバナナがk本未満の場合は、その山を食べきって、1時間が終わるまで休みます。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

発展問題

Twin問題:Kokoは1日に最大k本のバナナを食べ、d日以内に、山を順番に丸ごと食べます。最小のkはいくつで、探索では何が変わりますか?

コードをリセット
def minEatingSpeed(piles, h):
    # ここにコードを書いてください

テスト #1

テスト #2

テスト #3

引数

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

期待される出力

5