Menu
CoddyTech

Minimum Cost of Ropes

LeichtHeapGreedypython iconjava iconcpp iconc iconjs icon+10

Du hast einige Seile, und ropes[i] ist die Länge des Seils i. Du kannst beliebige zwei Seile zu einem Seil verbinden, dessen Länge der Summe der beiden entspricht; diese Verbindung kostet ebenfalls so viel. Du verbindest die Seile so lange, bis nur noch ein Seil übrig ist.

Schreibe eine Funktion namens minCostRopes, die die geringsten Gesamtkosten für das Verbinden aller Seile zu einem Seil zurückgibt, oder 0, wenn es von Anfang an nur ein Seil gibt.

Funktion

minCostRopes(ropes: integer-array) → integer
ropesinteger-array
die Länge jedes Seils
Gibt zurückinteger
die geringsten Gesamtkosten, um alle Seile zu einem einzigen zu verbinden

Einschränkungen

  • 1 ≤ ropes.length ≤ 104
  • 1 ≤ ropes[i] ≤ 100
  • Die Antwort passt in eine vorzeichenbehaftete 32-Bit-Ganzzahl.

Beispiele

Eingabe
ropes = [5, 2, 8, 3]
Ausgabe
33
Erklärung
Verbinde 2 und 3 zu 5, die beiden Seile der Länge 5 zu 10, dann 8 und 10 zu 18. Die Gesamtsumme ist 5 + 10 + 18 = 33.
challenge icon

Weiterführende Frage

Angenommen, eine Verbindung kann bis zu drei Seile zusammenfügen und kostet so viel wie ihre Gesamtlänge. Wie ändert sich die Greedy-Regel, wenn die Anzahl der Seile nicht ohne Rest aufgeht?

Code zurücksetzen
def minCostRopes(ropes):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argument

ropes = [5, 2, 8, 3]

Erwartete Ausgabe

33