题目描述
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。
时间限制:1秒;空间限制:32768K
解题思路
答题系统给出的初始python程序是这样的:
# -*- coding:utf-8 -*-
class Solution:
def Insert(self, num):
# write code here
def GetMedian(self):
# write code here
由于我们需要用两个函数记录并使用数据流,所以要定义__init__(self)函数,并新建一个list,最终python程序如下:
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.data = []
def Insert(self, num):
self.data.append(num)
self.data.sort()
# write code here
def GetMedian(self, data):
# write code here
if len(self.data)%2 == 0:
return (self.data[len(self.data)//2]+self.data[len(self.data)//2-1])/2.0
else:
return self.data[len(self.data)//2]