Menu
CoddyTech

Last Stone Weight

FácilHeappython iconjava iconcpp iconc iconjs icon+10

Você tem uma pilha de pedras, e stones[i] é o peso da pedra i. A cada rodada, pegue as duas pedras mais pesadas e esmague-as juntas. Se elas tiverem o mesmo peso, ambas são destruídas. Caso contrário, a pedra mais leve é destruída e a mais pesada fica com o peso correspondente à diferença entre os dois pesos.

Escreva uma função chamada lastStoneWeight que jogue rodadas até restar no máximo uma pedra e retorne o peso dessa pedra, ou 0 quando não restar nenhuma pedra.

Função

lastStoneWeight(stones: integer-array) → integer
stonesinteger-array
os pesos das pedras na pilha
Retornainteger
o peso da última pedra, ou 0 se não restar nenhuma

Restrições

  • 1 ≤ stones.length ≤ 104
  • 1 ≤ stones[i] ≤ 1000

Exemplos

Entrada
stones = [3, 9, 4, 6, 2]
Saída
0
Explicação
9 e 6 deixam uma 3, depois 4 e 3 deixam uma 1, depois 3 e 2 deixam outra 1. As duas pedras de peso 1 se destroem mutuamente, então não sobra nada e a resposta é 0.

lock icon+13 testes ocultos ao enviar

challenge icon

Para ir além

Os pesos são no máximo 1000. Você consegue usar esse limite para concluir em O(n + W) tempo, em que W é o maior peso, sem usar um heap?

Redefinir código
def lastStoneWeight(stones):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

stones = [3, 9, 4, 6, 2]

Esperado

0