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 が残ります。2つの 1 の石は互いに破壊し合うため、答えは 0 です。
challenge icon

発展問題

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

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

テスト #1

テスト #2

テスト #3

引数

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

期待される出力

0