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

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
Last Stone Weight: Stone Smashing GameInput Stones274Smashing ProcessRound 1: Smash 7 and 4Result: 7 - 4 = 3Round 2: Smash 3 and 2Result: 3 - 2 = 1Final Stone1Game Rule: Smash heaviest two stones• If weights equal → both destroyed• If weights differ → difference remainsOptimal: Use Max Heap - O(n log n) time
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
Asked in
Amazon 35 Google 25 Microsoft 20 Facebook 15
180.0K Views
Medium Frequency
~15 min Avg. Time
2.8K Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen