题目描述:
题解:
思路:维护一个有序队列,在获取中位数的时候,若为奇数,直接返回相应下标对应的值,若为偶数,返回中间两个下标对应数字的平均数。
1._init_初始化函数:创建一个list array,number保存array中元素的数量,初始化为0.
2.addNum函数,将num添加到array对应的位置,使添加后的array仍然有序。分三种情况:array为空,num大于等于array中最大的数字,num对应的位置在array中间。
3.findMedian函数:根据number的奇偶返回相应的值。
class MedianFinder: def __init__(self): self.array = [] self.number = 0 def addNum(self, num: int) -> None: if self.number == 0: self.array.append(num) elif num >= self.array[-1]: self.array.append(num) else: idx = 0 while num >= self.array[idx]: idx = idx + 1 self.array.insert(idx, num) self.number = self.number + 1 def findMedian(self) -> float: if self.number == 0: return [] if self.number % 2 == 1: mid = self.array[int((self.number - 1) / 2)] else: idx1 = int(self.number / 2) idx2 = idx1 - 1 mid = (self.array[idx1] + self.array[idx2]) / 2 return mid