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. Suppose the heaviest two stones have weights x and y with x ≤ y. The result of this smash is:
- If
x == y, both stones are destroyed - If
x != y, the stone of weightxis destroyed, and the stone of weightyhas new weighty - 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.
Input & Output
Example 1 — Multiple Smashes
$
Input:
stones = [2,7,4,1,8,1]
›
Output:
1
💡 Note:
Smash 8,7 → 1 remains. Smash 4,2 → 2 remains. Smash 2,1 → 1 remains. Smash 1,1 → both destroyed. Final stone: 1
Example 2 — Equal Stones
$
Input:
stones = [1]
›
Output:
1
💡 Note:
Only one stone remains, return its weight: 1
Example 3 — All Destroyed
$
Input:
stones = [3,3]
›
Output:
0
💡 Note:
Smash 3,3 → both stones destroyed (equal weights), no stones left, return 0
Constraints
- 1 ≤ stones.length ≤ 30
- 1 ≤ stones[i] ≤ 1000
Visualization
Tap to expand
Understanding the Visualization
1
Input Stones
Array of stone weights ready for smashing
2
Smash Process
Repeatedly find and smash two heaviest stones
3
Final Result
Weight of last remaining stone or 0
Key Takeaway
🎯 Key Insight: Max heap efficiently maintains access to the heaviest stones at each step
💡
Explanation
AI Ready
💡 Suggestion
Tab
to accept
Esc
to dismiss
// Output will appear here after running code