Tech for good

[Leetcode/Array, Heap (Priority Queue) 1046. Last Stone Weight 본문

IT/Computer Science

[Leetcode/Array, Heap (Priority Queue) 1046. Last Stone Weight

Diana Kang 2025. 8. 19. 08:52

class Solution:
    def lastStoneWeight(self, stones: List[int]) -> int:
        # what is heap? => find min/max using push() or pop()
        # it allows handling new value effeciently when we even insert new values.
        pq = [-x for x in stones] 
        # pq = [-2, -7, -4, -1, -8, -1]
        
        heapify(pq) # heapify() -> make it into binarry tree for efficiency (only half-through traversal)

        while len(pq) > 1:
            heaviest = -1 * heappop(pq)
            second_heaviest = -1 * heappop(pq)

            if heaviest != second_heaviest:
                new_weight = (heaviest - second_heaviest)
                heappush(pq, -1 * new_weight)
            
        return -1 * pq[0] if len(pq) > 0 else 0