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

南京网站建设推广专业模板建站

南京网站建设推广,专业模板建站,网站开发与部署题库,网站站欣赏思路: 1.使用数组来实现存储,但是对于数组来说,重新排列数组时间复杂度高,效率低 2.为了提高效率,需要高效率的可排列元素的容器:优先队列;使用使用两个优先队列来实现小大根堆存储前后半部分数据。根据队列…

思路:
1.使用数组来实现存储,但是对于数组来说,重新排列数组时间复杂度高,效率低
2.为了提高效率,需要高效率的可排列元素的容器:优先队列;使用使用两个优先队列来实现小大根堆存储前后半部分数据。根据队列尺寸来调整两队列中的元素。
原题链接:https://leetcode.cn/problems/find-median-from-data-stream/description/?favorite=2ckc81c

1.题目如下:

中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。

例如 arr = [2,3,4] 的中位数是 3 。
例如 arr = [2,3] 的中位数是 (2 + 3) / 2 = 2.5 。
实现 MedianFinder 类:

MedianFinder() 初始化 MedianFinder 对象。

void addNum(int num) 将数据流中的整数 num 添加到数据结构中。

double findMedian() 返回到目前为止所有元素的中位数。与实际答案相差 10-5 以内的答案将被接受。

示例 1:

输入
["MedianFinder", "addNum", "addNum", "findMedian", "addNum", "findMedian"]
[[], [1], [2], [], [3], []]
输出
[null, null, null, 1.5, null, 2.0]

解释
MedianFinder medianFinder = new MedianFinder();
medianFinder.addNum(1); // arr = [1]
medianFinder.addNum(2); // arr = [1, 2]
medianFinder.findMedian(); // 返回 1.5 ((1 + 2) / 2)
medianFinder.addNum(3); // arr[1, 2, 3]
medianFinder.findMedian(); // return 2.0

提示:

-105 <= num <= 105
在调用 findMedian 之前,数据结构中至少有一个元素
最多 5 * 104 次调用 addNum 和 findMedian

2.代码如下:

class MedianFinder {
public://小根堆和大根堆priority_queue<int, vector<int>, less<int>> queMin;priority_queue<int, vector<int>, greater<int>> queMax;
/*该题的重点是如何存储属数据方便存取中位数;
*/
//思路一:使用有序数组来实现存储,但是对于数组来说,重新排列数组时间复杂度高,效率低
//思路二:为了提高效率,使用使用两个优先队列来实现大根堆存储数据,对数据自动排序
/*对排序过的元素如何判断中位数;队列无法进行随机存储;通过两个优先队列来实现,将前后半部分元素分开
*/MedianFinder() {}void addNum(int num) {// 注意判断为空条件在先if(queMin.empty() || num<=queMin.top() ){queMin.push(num);//维持两队列平衡,小根堆元素不能大于大根堆超过1if(queMin.size()>queMax.size()+1){int temp=queMin.top();queMax.push(temp);queMin.pop();}}else{queMax.push(num);//设定大根堆的元素应该比小根堆小1or相等if(queMax.size()>queMin.size()){int temp=queMax.top();queMin.push(temp);queMax.pop();}}}double findMedian() {if(queMin.size()>queMax.size()){return queMin.top();}return (queMax.top()+queMin.top())/2.0;}
};/*** Your MedianFinder object will be instantiated and called as such:* MedianFinder* obj = new MedianFinder();* obj->addNum(num);* double param_2 = obj->findMedian();*/
http://www.dtcms.com/wzjs/202815.html

相关文章:

  • 无锡做网站哪家公司好千锋教育的真实性
  • 专业的网站开发公司遵义网站seo
  • 纪检监察网站建设背景系统优化大师官方下载
  • 怎么做qq代刷网站搜狗官网
  • 当今做哪个网站致富广告推广app
  • 做展板好的网站今天《新闻联播》回放
  • 阿里云做的网站这么卡的北京seo推广系统
  • 做婚纱网站的目的鄂州网站seo
  • 微信如何做模板下载网站热点营销案例
  • 郑州做网站公司汉狮价格酒店营销策划与运营
  • 重庆公司网站设计制作品牌推广公司
  • 域名抢住网站seo外包公司需要什么
  • 微网站怎么样做线下活动吸粉网站优化方式有哪些
  • 廊坊关键词优化seo发包软件
  • 医院网站建设中标郑州网站制作公司哪家好
  • 新闻网站建设新闻sem是什么测试
  • 网站制作三级页面域名服务器ip查询网站
  • 网站建设是什么中央广播电视总台
  • 个人承接网站开发项目谷歌搜索引擎镜像入口
  • 网站模板下载软件上海百度关键词推广
  • qq空间个人网站湖南网站营销seo方案
  • 凡科做的是网站吗百度seo培训公司
  • 松江附近做网站网站数据统计工具
  • 企业微网站建站廊坊优化外包
  • html个人网站案例希爱力双效片骗局
  • 美食网站建设项目分析报告google中文搜索引擎入口
  • 房屋租赁网站建设如何给客户定位四川seo多少钱
  • 成都微网站开发做app的网站
  • 费县住房和城乡建设局网站网站建设
  • 哪里做网站公司好排名第一的手机清理软件