Menu
CoddyTech

Last Stone Weight

ŁatweKopiecpython iconjava iconcpp iconc iconjs icon+10

Masz stos kamieni, a stones[i] to waga kamienia i. W każdej rundzie wybierz dwa najcięższe kamienie i rozbij je o siebie. Jeśli ważą tyle samo, oba zostają zniszczone. W przeciwnym razie lżejszy zostaje zniszczony, a cięższy zmniejsza swoją wagę o różnicę między ich wagami.

Napisz funkcję o nazwie lastStoneWeight, która rozgrywa rundy, dopóki nie zostanie co najwyżej jeden kamień, i zwraca wagę tego kamienia lub 0, jeśli nie został żaden kamień.

Funkcja

lastStoneWeight(stones: integer-array) → integer
stonesinteger-array
wagi kamieni w stosie
Zwracainteger
waga ostatniego kamienia lub 0, jeśli żaden nie pozostał

Ograniczenia

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

Przykłady

Wejście
stones = [3, 9, 4, 6, 2]
Wyjście
0
Wyjaśnienie
9 i 6 pozostawiają 3, następnie 4 i 3 pozostawiają 1, potem 3 i 2 pozostawiają kolejną 1. Dwa kamienie o wadze 1 niszczą się nawzajem, więc nic nie zostaje, a odpowiedź to 0.

lock icon+13 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Masy ciężarków wynoszą co najwyżej 1000. Czy możesz wykorzystać to ograniczenie, aby uzyskać złożoność czasową O(n + W), gdzie W to największa masa, bez użycia kopca?

Zresetuj kod
def lastStoneWeight(stones):
    # Wpisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

0