Menu
CoddyTech

Koko Eating Bananas

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

Kokoはn個のバナナの山を持っています。ここで、piles[i]は山iにあるバナナの数で、警備員が戻ってくるまであとh時間あります。彼女は1時間あたりに食べるバナナの数である整数の速度kを1つ選び、その速度を変えません。1時間ごとに、1つの山からk個のバナナを食べます。その山に残っているバナナがk個未満の場合は、その山を食べ終え、時間が終わるまで休みます。h時間以内にすべての山を食べ終えられる最小の速度kを返してください。

関数

minEatingSpeed(piles: integer-array, h: integer) → integer
pilesinteger-array
各山にあるバナナの数
hinteger
Kokoが持っている時間数
戻り値integer
h時間以内にすべての山を食べ終えられる、1時間あたりのバナナ数で表した最小の整数の食べる速度

制約

  • 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時間となるため、1時間超過します。

lock icon提出時に隠しテスト+22件

challenge icon

発展問題

対になる問題:Kokoにはd日あり、与えられた順番に山を丸ごと食べていきます。1日の上限であるk本のバナナに収まる限り、1日にできるだけ多くの山を食べます。最小のkはいくつでしょうか。また、二分探索のどの2つの部分が変わるでしょうか?

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

ケース1

ケース2

ケース3

入力

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

期待値

5