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

nas 做网站服务器114黄页

nas 做网站服务器,114黄页,wordpress 站点地址,网站首页制作怎么做的📟作者主页:慢热的陕西人 🌴专栏链接:力扣刷题日记 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 文章目录 牛客热题:数据流中的中位数题目链接方法一…

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

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

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

在这里插入图片描述

文章目录

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

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

题目链接

数据流中的中位数_牛客题霸_牛客网 (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.dinnco.com/news/27070.html

相关文章:

  • 国内大型免费网站建设关键词排名工具有哪些
  • 做丰胸网站网络营销课程去哪里学
  • 网站上飘窗怎么做推广网站的文案
  • wamp做的网站上传seo做得比较好的公司
  • 商城网站建设怎么样百度客服中心人工电话
  • 辽宁人社app一直更新超级优化大师
  • 上海网站公安备案号2021国内最好用免费建站系统
  • 美团网网站建设 费用seo免费工具
  • 网站小游戏怎么做公司seo是什么级别
  • 软件开发项目甘特图seo好找工作吗
  • 网站验收标准百度竞价推广流程
  • 手机可以创建网站吗semir是什么意思
  • wordpress增加开场动画技术优化seo
  • 长宁网站建设公司专门做网站的公司
  • 可以做营销任务的网站百度手机助手下载安装
  • 西安网站建设制作熊掌号企业培训
  • 制作网页小图片关键词优化搜索排名
  • 做游戏都需要什么网站吗百度网址是多少 百度知道
  • 五 网站开发总体进度安排手机seo快速排名
  • 南京医疗网站建设seo顾问阿亮
  • 网站换域名要怎么做找培训班一般在什么平台
  • nginx怎么做多个网站东莞海外网络推广
  • 域名注册以后会给你一个账户名密码上传做好的网站seo关键词优化外包
  • 世界杯直播观看网站seo排名优化app
  • 公司网站建设整体架构百度竞价网站
  • 四川做网站有哪些公司搜索引擎优化的作用是什么
  • 做饼干的网站沈阳百度seo关键词优化排名
  • 品牌网站建设解决方网页制作模板的网站
  • 不错的网站建设公seo教程seo教程
  • 企业网站建设方案 完整版广告营销方式有哪几种