这题就是设计一个类,可以方便的求出来中位数。要求中位数肯定就要排序,如果插入的时候直接排序的话肯定省事很多。这里介绍一个新的函数,bisect。这个函数可以自动插入有序序列,使用二分法,甚至可以不插入而直接求出来该插入的位置。高级语言就是好啊,不用自己设计。有了这个新函数就非常简单啦。代码如下:
class MedianFinder:
import bisect
def __init__(self):
"""
Initialize your data structure here.
"""
self.items = []
self.num = 0
def addNum(self, num):
"""
Adds a num into the data structure.
:type num: int
:rtype: void
"""
bisect.insort_right(self.items, num)
self.num = self.num + 1
def findMedian(self):
"""
Returns the median of current data stream
:rtype: float
"""
if self.num % 2 == 0:
return (self.items[self.num / 2] + self.items[self.num / 2 -1]) / 2.0
else:
return self.items[self.num /2]