美文网首页
『堆』最后一块石头的重量1046

『堆』最后一块石头的重量1046

作者: iamlightsmile | 来源:发表于2020-03-26 14:09 被阅读0次

题目相关

题目解读

根据题意,我们可以了解到需要不断地对一批正整数执行获取最大值并插入新值的操作,因而在此场景下使用堆排序(确切来说是大顶堆)最为高效。

Python相关

Python有一个内置库heapq专门就是用来执行最小堆的相关操作的,虽然没有直接替提供最大堆的实现,但我们稍加改造便可实现。

具体实现

class Solution:
    def lastStoneWeight(self, stones: List[int]) -> int:
        temp = [-x for x in stones]
        heapq.heapify(temp) # 将数值变为对应负值并建立大顶堆
        while len(temp) > 1:
            x = heapq.heappop(temp) # 从堆中取出最小值(对应原最大数值)
            y = heapq.heappop(temp) # 从堆中取出次小值
            if x != y:
                heapq.heappush(temp, x - y) # 将新值入堆
        if temp:
            return -temp[0]
        return 0

相关文章

网友评论

      本文标题:『堆』最后一块石头的重量1046

      本文链接:https://www.haomeiwen.com/subject/twqcuhtx.html