easyHeap & Priority Queue

Last Stone Weight

## Problem

You are given an array of integers `stones` where `stones[i]` is the weight of the `ith` stone.

We are playing a game with the stones. On each turn, we choose the **heaviest two stones** and smash them together.

- If `x == y`, both stones are destroyed.
- If `x != y`, the stone of weight `x` is destroyed, and the stone of weight `y` has new weight `y - x`.

At the end of the game, there is **at most one** stone left. Return the weight of the last remaining stone. If there are no stones left, return `0`.

Examples

Input
stones = [2,7,4,1,8,1]
Output
1
Smash 7,8 → 1; Smash 2,4 → 2; Smash 1,2 → 1; Smash 1,1 → 0; Left: 1.
Input
stones = [1]
Output
1
Only one stone.

Constraints

1 <= stones.length <= 30 1 <= stones[i] <= 1000
Python
Loading...