【题目描述】
【思路解析】这道题需要不断找top2,很自然可以想到用堆来解决,但是Python中堆默认是小根堆,为了满足题目要求,将所有元素取负,这样一来用小根堆排列出来的数组就是绝对值较大的元素在堆顶了。然后不断推出前两个,如果前两个大小有差,就push进差值,会自动重新调整堆的。只要注意一下判断数组内是否还有元素可以推出即可。
【源代码】
class Solution(object):
def lastStoneWeight(self, stones):
import heapq
stones=map(lambda x:-x,stones)
heapq.heapify(stones)
while(len(stones)>1):
max1=heapq.heappop(stones)
if stones:
max2=heapq.heappop(stones)
if(max1<max2):
heapq.heappush(stones,max1-max2)
return 0 if not stones else -stones[0]