Easy to Understand | Heap Based | Faster | Simple | Python Solution
\ndef lastStoneWeight(self, stones: List[int]) -> int:\n        stones = [-i for i in stones]\n        heapq.heapify(stones)\n        while len(stones)>1:\n    
```\ndef lastStoneWeight(self, stones: List[int]) -> int:\n        stones = [-i for i in stones]\n        heapq.heapify(stones)\n        while len(stones)>1:\n            first = abs(heapq.heappop(stones))\n            second = abs(heapq.heappop(stones))\n            if first != second:\n                heapq.heappush(stones, -abs(first - second))\n                \n        # this compact return statement way is great ^_^\n        return abs(stones[0]) if len(stones) else 0\n                \n```\n\n**I hope that you\'ve found the solution useful.**\n*In that case, please do upvote and encourage me to on my quest to document all leetcode problems\uD83D\uDE03*\nPS: Search for **mrmagician** tag in the discussion, if I have solved it, You will find it there\uD83D\uDE38
['Heap (Priority Queue)', 'Python', 'Python3']