剑指Offer 63. 数据流中的中位数(其他)

Posted on 2018-10-18 11:03  _hqc  阅读(168)  评论(0编辑  收藏  举报

题目描述

如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。

题目地址

https://www.nowcoder.com/practice/9be0172896bd43948f8a32fb954e1be1?tpId=13&tqId=11216&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

思路

初始化一个数组,读入数据后,排序,直接计算

Python

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.numbers = []
    def Insert(self, num):
        # write code here
        self.numbers.append(num)
    def GetMedian(self):
        # write code here
        self.numbers.sort()
        if len(self.numbers) % 2 == 1:
            return self.numbers[len(self.numbers)//2]
        else:
            return (self.numbers[len(self.numbers)//2]+self.numbers[len(self.numbers)//2-1])/2.0

if __name__ == '__main__':
    numbers = [1,2,3,4]
    S = Solution()
    for i in numbers:
        S.Insert(i)
    result = S.GetMedian()
    print(result)