题解 | #数据流中的中位数#

数据流中的中位数

https://www.nowcoder.com/practice/9be0172896bd43948f8a32fb954e1be1

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self) -> None:
        self.small_heap = []
        self.large_heap = []
    def Insert(self, num):
        # write code here
        import heapq
        
        if len(self.small_heap) < len(self.large_heap):
            # 先将num加入到large中
            heapq.heappush(self.large_heap, num)
            # 将large中的最小值取出,加入到small中
            heapq.heappush(self.small_heap, -heapq.heappop(self.large_heap))
        else:
            # 先将num加入到small中
            heapq.heappush(self.small_heap, -num)
            # 将small中的最大值加入到large中
            heapq.heappush(self.large_heap, -heapq.heappop(self.small_heap))

    def GetMedian(self):
        if len(self.small_heap) == len(self.large_heap):
            # 返回小根堆的最大值和大根堆的最小值的平均数
            return (-self.small_heap[0] + self.large_heap[0]) / 2
        else:
            # 返回large中最小值
            return self.large_heap[0]

全部评论

相关推荐

网安已死趁早转行:山东这地方有点说法
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务