Menu
CoddyTech

Minimum Cost of Ropes

У вас есть несколько верёвок, и ropes[i] — это длина верёвки i. Вы можете соединить любые две верёвки в одну, длина которой будет равна сумме их длин, а стоимость соединения будет равна той же сумме. Продолжайте соединять верёвки, пока не останется одна.

Напишите функцию с именем minCostRopes, которая возвращает наименьшую общую стоимость соединения всех верёвок в одну или 0, если изначально есть только одна верёвка.

Функция

minCostRopes(ropes: integer-array) → integer
ropesinteger-array
длина каждой верёвки
Возвращаетinteger
минимальная общая стоимость соединения всех верёвок в одну

Ограничения

  • 1 ≤ ropes.length ≤ 104
  • 1 ≤ ropes[i] ≤ 100
  • Ответ помещается в 32-битное знаковое целое число.

Примеры

Ввод
ropes = [5, 2, 8, 3]
Вывод
33
Пояснение
Соедини 2 и 3, чтобы получить 5, два каната длиной 5 — чтобы получить 10, затем 8 и 10, чтобы получить 18. Итого: 5 + 10 + 18 = 33.
challenge icon

Дополнительный вопрос

Предположим, что соединение может связывать до трёх верёвок и стоит столько, сколько составляет их общая длина. Как изменится жадное правило, если количество верёвок не делится нацело?

Сбросить код
def minCostRopes(ropes):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргумент

ropes = [5, 2, 8, 3]

Ожидаемый вывод

33