Menu
CoddyTech

Book Allocation Problem

Ein Regal enthält Bücher in einer festen Reihenfolge, und pages[i] ist die Anzahl der Seiten im Buch i. Teile die Bücher unter students Studierenden auf: Jeder Student erhält eine zusammenhängende Reihe benachbarter Bücher, mindestens ein Buch, und jedes Buch wird genau einem Studenten zugeteilt. Die Arbeitslast eines Studenten ist die Gesamtzahl der Seiten, die er erhält.

Gib den kleinstmöglichen Wert der höchsten Arbeitslast zurück. Wenn es mehr Studierende als Bücher gibt, gib -1 zurück.

Funktion

allocateBooks(pages: integer-array, students: integer) → integer
pagesinteger-array
die Seitenzahl jedes Buches, in Regalreihenfolge
studentsinteger
die Anzahl der Schüler, die sich die Bücher teilen
Gibt zurückinteger
die kleinstmögliche maximale Last oder -1, wenn es mehr Schüler als Bücher gibt

Einschränkungen

  • 1 ≤ pages.length ≤ 5000
  • 1 ≤ pages[i] ≤ 105
  • 1 ≤ students ≤ 104
  • Gib -1 zurück, wenn students > pages.length.

Beispiele

Eingabe
pages = [25, 40, 15, 30, 50]students = 3
Ausgabe
65
Erklärung
Gib [25, 40], [15, 30] und [50] aus: Die Auslastungen betragen 65, 45 und 50. Ein Limit von 64 schlägt fehl: Bei der Ausgabe erhalten vier Schüler [25], [40, 15], [30], [50].
challenge icon

Weiterführende Frage

Beweise, dass der aufgerundete durchschnittliche Anteil plus das dickste Buch immer eine brauchbare Obergrenze ist. Wie viele Prüfungen erspart diese Obergrenze bei einem Regal mit dünnen Büchern?

Code zurücksetzen
def allocateBooks(pages, students):
    # Schreibe hier Code

Test #1

Test #2

Test #3

Argumente

pages = [25, 40, 15, 30, 50]
students = 3

Erwartete Ausgabe

65