1 题目描述
2 解题思路
用heapq(最小堆)实现。由于heapq是最小堆,但每次我们进行操作的是最大的两个石头,所以一开始的list我们要对所有的重量取负号。每次取出“最轻”的两个石头,如果重量不一样,相减再放入最小堆中。
最小堆部分可以参考python库整理:heapq 最小堆_刘文巾的博客-CSDN博客
import heapq
class Solution:
def lastStoneWeight(self, stones: List[int]) -> int:
stones=[-stone for stone in stones]
heapq.heapify(stones)
while(len(stones)>1):
x=heapq.heappop(stones)
y=heapq.heappop(stones)
if(x==y):
continue
else:
heapq.heappush(stones,x-y)
if(len(stones)==0):
return 0
else:
return -heapq.heappop(stones)