首页 > 其他分享 >剑指 Offer 41. 数据流中的中位数(困难)

剑指 Offer 41. 数据流中的中位数(困难)

时间:2023-08-23 20:45:05浏览次数:42  
标签:返回 Offer nums 中位数 41 num 数组

题目:

class MedianFinder {      //暴力解法:每添加一个数字后用sort进行排序,然后返回中位数,时间复杂度:nlogn,会超时。因此采用**二分法查找并进行插入的方法**。时间复杂度:logn
public:
    vector<int> nums;      //初始化一个当前数组
    /** initialize your data structure here. */
    MedianFinder() {
        
    }
    
    void addNum(int num) {
        if(nums.empty()){
            nums.push_back(num);      //当前数组为空则直接插入数字
        }
        else{
            nums.insert(lower_bound(nums.begin(), nums.end(), num), num);      //当前数组不为空:利用lower_bound(),在nums.begin()和nums.end()中的前闭后开区间进行二分查找,返回大于或等于num的第一个元素位置。然后在该位
        }                                                                                                                                                                                            //置插入num
    }
    
    double findMedian() {
        int n = nums.size();
        return n%2==1 ? nums[n/2] : (nums[n/2-1]+nums[n/2])*0.5;      //按要求返回中位数。要注意的是如果数组为偶数的话,返回中间两个数的平均数时要用*0.5,不能用/2,否则小数部分会被省略
    }
};

作者:腐烂的橘子
链接:https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/solutions/104353/you-xian-dui-lie-by-z1m/
来源:力扣(LeetCode)

标签:返回,Offer,nums,中位数,41,num,数组
From: https://www.cnblogs.com/fly-smart/p/17652749.html

相关文章

  • Python基础入门学习笔记 041 魔法方法:构造和析构
     __init__(self[,...]) 方法是类在实例化成对象的时候首先会调用的一个方法1>>>classRectangle:2def__init__(self,x,y):3self.x=x4self.y=y5defgetPeri(self):6return(self.x+self.y)*27defgetArea......
  • 剑指 Offer 51. 数组中的逆序对(困难)
    题目:classSolution{//这道题利用了归并排序(分而治之)的思想,就是在每一次排序中统计逆序对的个数public:intmergesort(intl,intr,vector<int>&nums,vector<int>&tmp){//tmp用于记录合并之前的两个子数组if(l>=r)return0;//递归......
  • 设计原理图:FMC141-四路 250Msps 16bits AD FMC子卡
     一、产品概述:   本板卡基于 FMC 标准板卡,实现 4 路 16-bit/250Msps ADC 功能。遵循 VITA 57 标准,板卡可以直接与xilinx公司或者本公司 FPGA 载板连接使用。板卡 ADC 器件采用 ADI 公司 AD9467 芯片,用户可以通过 FMC 接口配置芯片工作状......
  • 剑指 Offer 45. 把数组排成最小的数(中等)
    题目:classSolution{public:stringminNumber(vector<int>&nums){//这道题要学会重构字符串的比较排序vector<string>str;//将数组全部转化为字符串进行比较stringresult;for(inti=0;i<nums.size();i++){str.p......
  • CF1841F
    原题翻译算是一道很经典的题了,所以决定写博客设最后选出的四种生物个数分别是\(A\),\(B\),\(C\),\(D\),则最后的答案显然是\((A-B)^2+(C-D)^2\)我们不妨把一个生物群\(a_i\),\(b_i\),\(c_i\),\(d_i\)看成向量\((a_i-b_i,c_i-d_i)\),则原题就变成了从\(n\)个向量中选若干个,使得这......
  • 剑指 Offer 33. 二叉搜索树的后序遍历序列(中等)
    题目:结合以下图理解该方法classSolution{//本题要点:二叉搜索树性质:根节点一定大于所有左子树,一定小于所有右子树public:booltraversal(vector<int>&postorder,intl,intr){//l和r分别为当前树的左右边界if(l>=r)returntrue;int......
  • Android开发如何斩获高薪offer?给大家几点面试建议
    前言又到了每年的求职季,Android开发工程师在找工作过程对于简历设计和面试技巧通常会有一定的欠缺,而这往往是求职过程是否顺利的决定性因素。因此,掌握一定的面试技巧对于找互联网技术岗位的工作帮助非常大。本篇文章给大家分享一波面试必备技巧,全文是通过在阿里的面试官的交流整理......
  • SpringBoot复习:(41)配置文件中配置的server开头的属性是怎么配置到Servlet容器中起作用
    ServletWebServerFactoryAutoConfiguration类:可以看到其中使用了@EnableConfigurationProperties导入了ServerProperties而ServerProperties通过使用@ConfigurationProperties注解导入了配置文件中已server开头的那些配置项。可以看到ServletWebServerFactory定义了一个类型为Se......
  • 北大ACM poj2141 Message Decowding
    MessageDecowdingTimeLimit:1000MS MemoryLimit:65536KTotalSubmissions:10326 Accepted:5672DescriptionThecowsarethrilledbecausethey'vejustlearnedaboutencryptingmessages.Theythinktheywillbeabletousesecretmessagestoplot......
  • 学习笔记411—【词向量基础】:one-hot
    【词向量基础】:one-hot词向量(wordvector),也叫词嵌入(wordembedding),是一种词表征形式,将词从符号形式映射为向量形式,渐渐演变成了一种知识表示的方法。将词语从符号表示形式转换为了向量表示形式,方便了机器对自然语言的计算,因此,词向量几乎成为了所有自然语言处理和理解的下游任务的......