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 weź dwa najcięższe kamienie i zderz je ze sobą. Jeśli ważą tyle samo, oba zostają zniszczone. W przeciwnym razie lżejszy zostaje zniszczony, a cięższy zmniejsza swoją wagę o różnicę ich wag.

Napisz lastStoneWeight, które rozgrywa rundy, aż pozostanie co najwyżej jeden kamień, i zwraca jego wagę albo 0, jeśli nie został żaden kamień.

Funkcja

lastStoneWeight(stones: integer-array) → integer
stonesinteger-array
wagi kamieni na stosie
Zwracainteger
masa ostatniego kamienia albo 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, następnie 3 i 2 pozostawiają kolejne 1. Dwa kamienie o wadze 1 niszczą się nawzajem, więc odpowiedź to 0.
challenge icon

Pytanie dodatkowe

Masy wynoszą najwyżej 1000. Czy możesz wykorzystać to ograniczenie, aby uzyskać złożoność czasową O(n + W), gdzie W jest największą masą, bez użycia kopca?

Zresetuj kod
def lastStoneWeight(stones):
    # Napisz kod tutaj

Test #1

Test #2

Test #3

Argument

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

Oczekiwany wynik

0