Menu
CoddyTech

Minimum Cost of Ropes

FacileHeapGreedypython iconjava iconcpp iconc iconjs icon+10

Hai alcune corde e ropes[i] è la lunghezza della corda i. Puoi unire due corde qualsiasi in un'unica corda la cui lunghezza è la somma delle due, e l'unione costa la stessa somma. Continua a unire le corde finché non ne rimane una sola.

Scrivi una funzione chiamata minCostRopes che restituisca il costo totale minimo per unire tutte le corde in un'unica corda, oppure 0 se inizialmente c'è una sola corda.

Funzione

minCostRopes(ropes: integer-array) → integer
ropesinteger-array
la lunghezza di ciascuna corda
Restituisceinteger
il costo totale minimo per unire tutte le corde in un'unica

Vincoli

  • 1 ≤ ropes.length ≤ 104
  • 1 ≤ ropes[i] ≤ 100
  • La risposta è rappresentabile in un intero con segno a 32 bit.

Esempi

Input
ropes = [5, 2, 8, 3]
Output
33
Spiegazione
Unisci 2 e 3 ottenendo 5, le due corde di lunghezza 5 ottenendo 10, poi 8 e 10 ottenendo 18. Il totale è 5 + 10 + 18 = 33.
challenge icon

Per approfondire

Supponiamo che un collegamento possa unire fino a tre corde e costi quanto la loro lunghezza totale. Come cambia la regola greedy quando il numero di corde non è divisibile esattamente?

Ripristina il codice
def minCostRopes(ropes):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomento

ropes = [5, 2, 8, 3]

Output atteso

33