当前位置: 首页 > news >正文

nas 做网站服务器链接下载

nas 做网站服务器,链接下载,现代简约设计风格说明,企企管理系统平台📟作者主页:慢热的陕西人 🌴专栏链接:力扣刷题日记 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 文章目录 牛客热题:数据流中的中位数题目链接方法一…

📟作者主页:慢热的陕西人

🌴专栏链接:力扣刷题日记

📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言

在这里插入图片描述

文章目录

  • 牛客热题:数据流中的中位数
    • 题目链接
    • 方法一:直接插入排序
      • 思路
      • 代码
      • 复杂度
    • 方法二:堆
      • 思路
      • 代码
      • 复杂度

牛客热题:数据流中的中位数

题目链接

数据流中的中位数_牛客题霸_牛客网 (nowcoder.com)

方法一:直接插入排序

思路

插入:

  • 对于每次的插入:
    • 如果序列为零:直接插入
    • 如果序列中的值均小于当前要插入的值:直接插入到序列的尾部
    • 找到序列中第一个比当前要插入的值大的位置,然后将当前的值插入到这个位置,将后续的序列向后挪

计算中位数:

  • 对于偶数的情况
    • 我们直接返回第N / 2 和N / 2 - 1 个元素的平均值即可
  • 对于奇数的情况
    • 我们直接返回N / 2个元素

代码

#include <vector>
class Solution {
public:void Insert(int num) {int n = v.size();if(n == 0) {v.push_back(num);return ;}else{auto it = lower_bound(v.begin(), v.end(), num);v.insert(it, num);}}double GetMedian() { int n = v.size();if(n == 1) return v[0];if(n % 2 == 1){return v[n / 2];}else return (v[n / 2] + v[n / 2 - 1]) / 2;}private:vector<double> v;};

复杂度

时间复杂度:O( N 2 N^2 N2) ,因为每次插入都需要在前面的元素中遍历找到对应的位置,所以每个元素的插入的时间复杂度是O(N),因此时间复杂度为O( N 2 N^2 N2)

空间复杂度:O(N) , 只额外使用了一个对应的vector容器来存储

方法二:堆

思路

中位数是指:有序数组中中间的那个数。则根据中位数可以把数组分为如下三段:
[0 ... median - 1], [median], [median ... arr.size() - 1],即[中位数的左边,中位数,中位数的右边]

那么,如果我有个数据结构保留[0…median-1]的数据,并且可以O(1)时间取出最大值,即arr[0...median-1]中的最大值
相对应的,如果我有个数据结构可以保留[median + 1 ... arr.size() - 1] 的数据, 并且可以O(1)时间取出最小值,即
arr[median + 1 ... arr.size() - 1] 中的最小值。
然后,我们把[median]即中位数,随便放到哪个都可以。

假设[0 ... median - 1]的长度为l_len, [median + 1 ... arr.sise() - 1]的长度为 r_len.
1.如果l_len == r_len + 1, 说明,中位数是左边数据结构的最大值
2.如果l_len + 1 == r_len, 说明,中位数是右边数据结构的最小值
3.如果l_len == r_len, 说明,中位数是左边数据结构的最大值与右边数据结构的最小值的平均值。

说了这么多,一个数据结构可以O(1)返回最小值的,其实就是小根堆,O(1)返回最大值的,其实就是大根堆。并且每次插入到堆中的时间复杂度为O(logn)

所以,GetMedian()操作算法过程为:

  • 初始化一个大根堆,存中位数左边的数据,一个小根堆,存中位数右边的数据
  • 动态维护两个数据结构的大小,即最多只相差一个

代码

#include <queue>
class Solution {
private:#define SCD static_cast<double>priority_queue<int> min_q;priority_queue<int, vector<int>, greater<int>> max_q;public:void Insert(int num) {//优先插入到对应的大堆min_q.push(num);max_q.push(min_q.top());min_q.pop();if(min_q.size() < max_q.size()){min_q.push(max_q.top());max_q.pop();}        }double GetMedian() { //因为是优先插入大堆的, 所以:min_q >= max_qreturn min_q.size() > max_q.size() ? SCD(min_q.top()) : SCD(min_q.top() + max_q.top()) / 2;}};

复杂度

  • 时间复杂度:Insert函数O( l o g n logn logn),维护堆的复杂度,GetMedian函数O(1),直接访问
  • 空间复杂度:O(n),两个堆的空间,虽是两个,但是一个堆最多 n / 2 n / 2 n/2
http://www.yidumall.com/news/71351.html

相关文章:

  • 抖音代运营商seo内容优化是什么
  • 义乌市做网站市场推广方案怎么写
  • 做网站要什么优化大师手机版
  • wordpress主题整个删除系统优化的例子
  • 用什么程序做视频网站推广公司品牌
  • 做招聘和求职都需要哪些网站品牌策划与推广
  • 在美国如何设置dns访问国内网站关键词优化分析工具
  • 怎么进行网站关键词优化搜索引擎收录入口
  • 做盗链网站新媒体推广渠道有哪些
  • 巢湖网站制作宁波优化推广选哪家
  • 南阳网站建设xihewh汕头seo服务
  • 地方门户网站建设要求百度电话客服24小时人工服务热线
  • 网站制作图书找相似图片 识别
  • 中山网站推广词站长平台
  • jsp网站开发论文2017我想注册一个网站怎么注册
  • wordpress 页脚广告苏州seo网站管理
  • 网站建设与研发谷歌应用商店app下载
  • 手机上什么网站兰州seo优化公司
  • 彩视音乐相册制作下载安装无锡百度seo优化
  • 免费网站b2b新泰网站seo
  • 濮阳网站公司seo软件下载
  • 如何制作一个自己的网站?我国的网络营销公司
  • 京伦科技网站做的怎么样商丘网站推广公司
  • 中国空间站最新视频有哪些网络营销公司
  • 网站建设广州网站建设站长工具查询入口
  • 哪家公司搭建网站seo诊断
  • vps 做网站中国广告公司前十强
  • 站点建立网站的方法成都十大营销策划公司
  • 为什么做域名跳转网站样式不见了软件开发培训
  • 建设人才库网站短视频seo推广隐迅推专业