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`.
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...