Menu
CoddyTech

Last Stone Weight

MudahHeappython iconjava iconcpp iconc iconjs icon+10

Kamu memiliki tumpukan batu, dan stones[i] adalah berat batu i. Di setiap ronde, ambil dua batu terberat dan benturkan keduanya. Jika beratnya sama, keduanya hancur. Jika tidak, batu yang lebih ringan hancur dan berat batu yang lebih berat berkurang sebesar selisih kedua berat tersebut.

Tulis lastStoneWeight, yang menjalankan ronde hingga tersisa paling banyak satu batu dan mengembalikan beratnya, atau 0 jika tidak ada batu yang tersisa.

Fungsi

lastStoneWeight(stones: integer-array) → integer
stonesinteger-array
berat batu-batu di tumpukan
Mengembalikaninteger
berat batu terakhir, atau 0 jika tidak ada yang tersisa

Batasan

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

Contoh

Input
stones = [3, 9, 4, 6, 2]
Output
0
Penjelasan
9 dan 6 menyisakan 3, lalu 4 dan 3 menyisakan 1, lalu 3 dan 2 menyisakan 1 lagi. Kedua batu 1 saling menghancurkan, jadi jawabannya adalah 0.
challenge icon

Pertanyaan lanjutan

Bobotnya paling besar 1000. Bisakah kamu memanfaatkan batas tersebut untuk menyelesaikannya dalam waktu O(n + W), dengan W sebagai bobot terbesar, tanpa heap?

Reset kode
def lastStoneWeight(stones):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

0