last-stone-weightV1.py (678B)
1 from heapq import heappop, heappush, heapify 2 3 4 class Solution: 5 def lastStoneWeight(self, stones: List[int]) -> int: 6 7 # heapq is a min-heap. 8 9 stones = [-x for x in stones] 10 heapify(stones) 11 heap = stones 12 13 while len(heap) > 1: 14 15 # y 16 heaviest = heappop(heap) 17 18 # x 19 second_heaviest = heappop(heap) 20 21 # if x == y both destroyed 22 if heaviest == second_heaviest: 23 continue 24 25 # x != y 26 heaviest = heaviest - second_heaviest 27 heappush(heap, heaviest) 28 29 if len(heap) == 1: 30 return heap[0] * -1 31 32 return 0