您的位置:首页 > 编程语言 > Python开发

leetcode之Find Median from Data Stream

2015-11-02 13:39 585 查看
这题就是设计一个类,可以方便的求出来中位数。要求中位数肯定就要排序,如果插入的时候直接排序的话肯定省事很多。这里介绍一个新的函数,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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息