Menu
CoddyTech

Last Stone Weight

やさしいヒープpython iconjava iconcpp iconc iconjs icon+10

石の山があり、stones[i] は石 i の重さです。各ラウンドで、最も重い石を2つ取り出してぶつけます。重さが同じなら、両方とも砕けます。異なる場合は、軽い方が砕け、重い方は2つの重さの差だけ軽くなります。

石が最大でも1つになるまでラウンドを繰り返し、その石の重さを返す lastStoneWeight という関数を書いてください。石が残っていない場合は、0 を返します。

関数

lastStoneWeight(stones: integer-array) → integer
stonesinteger-array
山の中の石の重さ
戻り値integer
最後に残った石の重さ。石が残っていない場合は 0

制約

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

例

入力
stones = [3, 9, 4, 6, 2]
出力
0
説明
9 と 6 から 3 が残り、次に 4 と 3 から 1 が残り、次に 3 と 2 からもう一つの 1 が残ります。重さ 1 の石は互いに破壊し合うため、何も残らず、答えは 0 です。

lock icon提出時に隠しテスト+13件

challenge icon

発展問題

重さは最大で1000です。この上限を利用して、ヒープを使わずに O(n + W) 時間で処理できますか?

コードをリセット
def lastStoneWeight(stones):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

ケース3

入力

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

期待値

0