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 - Optimal Solution INPUT stones array: 2 7 4 1 8 1 [0] [1] [2] [3] [4] [5] Max Heap Structure: 8 7 4 2 1 1 ALGORITHM STEPS 1 Build Max Heap Insert all stones into heap 2 Extract Two Heaviest Pop x and y (x <= y) 3 Smash Stones If x != y, push (y-x) 4 Repeat Until Done Until 0 or 1 stone left Simulation: Smash 8,7 --> push 1 Heap: [4,2,1,1,1] Smash 4,2 --> push 2 Heap: [2,1,1,1] Smash 2,1 --> push 1 Smash 1,1 --> Smash 1,1 Result: [1] FINAL RESULT Last remaining stone: 1 Output: 1 OK - Verified Time: O(n log n) Space: O(n) Key Insight: Use a Max Heap to efficiently find and remove the two heaviest stones in O(log n) time. After smashing, if stones differ, push the difference back. Repeat until one or zero stones remain. The heap maintains order automatically, making this approach optimal for the problem. TutorialsPoint - Last Stone Weight | Max Heap Approach
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