题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,
那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。
解题思路:接收数据,对数据进行排序,判断数据的长度,如果是奇数位,则直接返回中位数,若是偶数位,则计算中间两个值得平均值并返回。
代码如下:
class Solution:
def Insert(self, num):
mid = self.GetMedian(num)
return mid
def GetMedian(self, num):
num = self.getsort(num)
if len(num) % 2 == 1:
mid = num[len(num) // 2]
else:
mid = (num[len(num) // 2] + num[(len(num) – 1) // 2]) / 2
return mid
def getsort(self, num):
for i in range(len(num) – 1):
for j in range(i + 1, len(num)):
if num[i] > num[j]:
num[i], num[j] = num[j], num[i]
return num
if __name__ == ‘__main__’:
s = Solution()
num = [1, 5, 7, 4, 6, 2, 8, 3]
mid = s.Insert(num)
print(mid)
【以上解题思路纯属个人观点,如有不妥之处,还请大家批评指正!】