Menu
CoddyTech

Minimum Cost of Ropes

Masz kilka lin, a ropes[i] to długość liny i. Możesz połączyć dowolne dwie liny w jedną, której długość będzie sumą długości tych lin. Koszt połączenia jest równy tej samej sumie. Łączysz liny, aż zostanie jedna.

Napisz funkcję o nazwie minCostRopes, która zwraca najmniejszy łączny koszt połączenia wszystkich lin w jedną albo 0, jeśli od początku jest tylko jedna lina.

Funkcja

minCostRopes(ropes: integer-array) → integer
ropesinteger-array
długość każdej liny
Zwracainteger
najmniejszy łączny koszt połączenia wszystkich lin w jedną

Ograniczenia

  • 1 ≤ ropes.length ≤ 104
  • 1 ≤ ropes[i] ≤ 100
  • Odpowiedź mieści się w 32-bitowej liczbie całkowitej ze znakiem.

Przykłady

Wejście
ropes = [5, 2, 8, 3]
Wyjście
33
Wyjaśnienie
Połącz 2 i 3, otrzymując 5, dwie liny o długości 5, otrzymując 10, a następnie 8 i 10, otrzymując 18. Suma wynosi 5 + 10 + 18 = 33.
challenge icon

Pytanie dodatkowe

Załóżmy, że jedno połączenie może łączyć maksymalnie trzy liny i kosztuje tyle, ile wynosi ich łączna długość. Jak zmienia się zachłanna reguła, gdy liczba lin nie dzieli się równo?

Zresetuj kod
def minCostRopes(ropes):
    # Wpisz kod tutaj

Test #1

Test #2

Test #3

Argument

ropes = [5, 2, 8, 3]

Oczekiwany wynik

33