Menu
CoddyTech

Last Stone Weight

FácilMontículopython iconjava iconcpp iconc iconjs icon+10

Tienes un montón de piedras, y stones[i] es el peso de la piedra i. En cada ronda, toma las dos piedras más pesadas y golpéalas entre sí. Si pesan lo mismo, ambas se destruyen. Si no, la más ligera se destruye y la más pesada reduce su peso a la diferencia entre los dos pesos.

Escribe una función llamada lastStoneWeight que juegue rondas hasta que quede como máximo una piedra y devuelva el peso de esa piedra, o 0 si no queda ninguna.

Función

lastStoneWeight(stones: integer-array) → integer
stonesinteger-array
los pesos de las piedras en la pila
Devuelveinteger
el peso de la última piedra, o 0 si no queda ninguna

Restricciones

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

Ejemplos

Entrada
stones = [3, 9, 4, 6, 2]
Salida
0
Explicación
9 y 6 dejan un 3, después 4 y 3 dejan un 1, después 3 y 2 dejan otro 1. Las dos piedras de peso 1 se destruyen mutuamente, así que no queda nada y la respuesta es 0.

lock icon+13 pruebas ocultas al enviar

challenge icon

Para ir más allá

The pesos son como máximo 1000. ¿Puedes usar ese límite para terminar en tiempo O(n + W), donde W es el peso más grande, sin un heap?

Restablecer código
def lastStoneWeight(stones):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

0