Bootstrap

【hot100篇-python刷题记录】【数据流的中位数】

R7-堆篇

 

from heapq import *
class MedianFinder:

    def __init__(self):
        #建立小根堆,保存大的一半
        self.A=[]
        #大根堆,B中的存储都是负数形式
        self.B=[]
        
    def addNum(self, num: int) -> None:
        if len(self.A)!=len(self.B):
            heappush(self.B,-heappushpop(self.A,num))
        else:
            heappush(self.A,-heappushpop(self.B,-num))

    def findMedian(self) -> float:
        return self.A[0] if len(self.A)!=len(self.B) else(self.A[0]-self.B[0])/2.0



# Your MedianFinder object will be instantiated and called as such:
# obj = MedianFinder()
# obj.addNum(num)
# param_2 = obj.findMedian()

精简的代码总是难以琢磨。。。 

;