Menu
CoddyTech

Last Stone Weight

Bir taş yığınınız var ve stones[i], i taşının ağırlığıdır. Her turda en ağır iki taşı alıp birbirine vurun. Ağırlıkları eşitse ikisi de yok edilir. Eşit değilse, hafif olan yok edilir ve ağır olanın ağırlığı iki ağırlık arasındaki fark kadar azalır.

En fazla bir taş kalana kadar turları sürdüren ve kalan taşın ağırlığını döndüren ya da hiç taş kalmadığında 0 döndüren lastStoneWeight fonksiyonunu yazın.

Fonksiyon

lastStoneWeight(stones: integer-array) → integer
stonesinteger-array
yığındaki taşların ağırlıkları
Döndürürinteger
son taşın ağırlığı veya hiç taş kalmadıysa 0

Kısıtlar

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

Örnekler

Girdi
stones = [3, 9, 4, 6, 2]
Çıktı
0
Açıklama
9 ve 6, geriye 3 bırakır; ardından 4 ve 3, geriye 1 bırakır; sonra 3 ve 2, geriye bir 1 daha bırakır. İki 1 taşı birbirini yok eder, bu nedenle cevap 0 olur.
challenge icon

Ek soru

Ağırlıklar en fazla 1000. Bu üst sınırı kullanarak, bir yığın olmadan O(n + W) sürede tamamlayabilir misin? Burada W en büyük ağırlıktır.

Kodu sıfırla
def lastStoneWeight(stones):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argüman

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

Beklenen Çıktı

0