Menu
CoddyTech

Minimum Cost of Ropes

FácilHeapGulosopython iconjava iconcpp iconc iconjs icon+10

Você tem algumas cordas, e ropes[i] é o comprimento da corda i. Você pode unir quaisquer duas cordas em uma única corda cujo comprimento é a soma dos comprimentos das duas, e essa união custa essa mesma soma. Continue unindo até restar uma única corda.

Escreva uma função chamada minCostRopes que retorne o menor custo total para unir todas as cordas em uma só, ou 0 quando houver apenas uma corda desde o início.

Função

minCostRopes(ropes: integer-array) → integer
ropesinteger-array
o comprimento de cada corda
Retornainteger
o menor custo total para unir todas as cordas em uma só

Restrições

  • 1 ≤ ropes.length ≤ 104
  • 1 ≤ ropes[i] ≤ 100
  • A resposta cabe em um inteiro com sinal de 32 bits.

Exemplos

Entrada
ropes = [5, 2, 8, 3]
Saída
33
Explicação
Junte 2 e 3 para obter 5, as duas cordas de comprimento 5 para obter 10, depois 8 e 10 para obter 18. O total é 5 + 10 + 18 = 33.
challenge icon

Para ir além

Suponha que uma junção possa unir até três cordas e custe o comprimento total delas. Como a regra gulosa muda quando o número de cordas não pode ser dividido igualmente?

Redefinir código
def minCostRopes(ropes):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumento

ropes = [5, 2, 8, 3]

Saída Esperada

33