zoukankan      html  css  js  c++  java
  • 牛客网-Python-数据流中的中位数(未结束)

    题目描述

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

    代码:

    1.插入时先二分查找插入位置再进行插入

    2.Python进行除法时两个整型得到整型(最终想要结果为float)

    牛客该Python版本有问题

    # -*- coding:utf-8 -*-
    #排序
    class Solution:
        def __init__(self):
            self.numlist = []
        def Insert(self, num):
            # write code here
            l = 0
            r = len(self.numlist)-1
            if r == -1:
                self.numlist.append(num)
            elif r==0:
                if num>=self.numlist[0]:
                    self.numlist.append(num)
                else:
                    self.numlist.insert(0,num)
            else:
                while(l<=r):
                    mid = (l+r)//2
                    if self.numlist[mid]>num:
                        r = mid-1
                        if l>r:
                            self.numlist.insert(mid,num)
                    elif self.numlist[mid]<num:
                        l = mid+1
                        if l>r:
                            self.numlist.insert(mid,num)
                    else:
                        self.numlist.insert(mid,num)
        def GetMedian(self,n=None):
            # write code here
            l = len(self.numlist)
            if l%2 == 0:
                result = float((self.numlist[l//2-1]+self.numlist[l//2]))/2
            else:
                result = self.numlist[l//2]
            return result

    看答案大家用了大顶堆和小顶堆。

  • 相关阅读:
    mysql安装部署
    SSH升级
    符号、特殊字符的英文读法
    用python开发视频压缩器
    VSCode配置项
    工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
    单例模式
    Jquery 绑定事件
    中文分词 新建索引 更新索引
    微信自动回复机器人
  • 原文地址:https://www.cnblogs.com/ditingz/p/12259717.html
Copyright © 2011-2022 走看看