Menu
CoddyTech

Koko Eating Bananas

Koko ha n mucchi di banane, dove piles[i] è il numero di banane nel mucchio i, e h ore prima che tornino le guardie. Sceglie una velocità di consumo k, un numero intero di banane all’ora, e la mantiene. Ogni ora mangia k banane da un mucchio; se in quel mucchio ne restano meno di k, lo finisce e riposa fino alla fine dell’ora. Restituisci la velocità minima k che le consente di finire tutti i mucchi entro h ore.

Funzione

minEatingSpeed(piles: integer-array, h: integer) → integer
pilesinteger-array
il numero di banane in ogni mucchio
hinteger
il numero di ore che Koko ha
Restituisceinteger
la velocità intera minima con cui mangiare, in banane all’ora, che permette di finire ogni mucchio entro h ore

Vincoli

  • 1 ≤ piles.length ≤ 5000
  • 1 ≤ piles[i] ≤ 109
  • piles.length ≤ h ≤ 109, quindi esiste sempre una risposta.

Esempi

Input
piles = [4, 10, 7, 3]h = 6
Output
5
Spiegazione
Alla velocità 5, le pile 4, 10, 7 e 3 richiedono 1, 2, 2 e 1 ore: 6 in totale, il che va bene. Alla velocità 4 richiedono 1, 3, 2 e 1 ore, per un totale di 7, un'ora di troppo.

lock icon+22 test nascosti all’invio

challenge icon

Per approfondire

Un problema gemello: Koko ha d giorni e mangia interi mucchi nell’ordine indicato, tutti i mucchi che riesce a mangiare in un giorno entro il limite giornaliero di k banane. Qual è il valore minimo di k e quali due parti della tua ricerca binaria cambiano?

Ripristina il codice
def minEatingSpeed(piles, h):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Caso 3

Input

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

Atteso

5