剑指offer 面试题64 数据流的中位数
struct cmp
{
bool operator()(double a, double b)
{
return a > b;
}
};
class Solution {
public:
void Insert(int num)
{
if (((maxHeap.size() + minHeap.size()) & 1 )== 0)//如果是偶数,插入到最大堆里面
{
if (minHeap.size()>0&&num > minHeap.top())
{
int numtmp = minHeap.top();
minHeap.pop();
minHeap.push(num);
num = numtmp;
}
maxHeap.push(num);
}
else
{
if (maxHeap.size()>0&&num < maxHeap.top())
{
int numtmp = maxHeap.top();
maxHeap.pop();
maxHeap.push(num);
num = numtmp;
}
minHeap.push(num);
}
} double GetMedian()
{
if (((maxHeap.size() + minHeap.size()) & 1) == 0)//如果是偶数
{
if (maxHeap.size() + minHeap.size() == 0) return 0;
return (minHeap.top() + maxHeap.top()) / 2;
}
else
{
return maxHeap.size() > minHeap.size() ? maxHeap.top() : minHeap.top();
}
} private :
priority_queue<double> maxHeap;
priority_queue<double,vector<double>,cmp> minHeap;
};
数组中出现次数超过一半的数
class Solution {
public:
    int MoreThanHalfNum_Solution(vector<int> numbers) {
    	if(numbers.size()==0) return 0;
        int pre=numbers[0];
        int cnt=1;
        for(int i=1;i<numbers.size();i++)
        {
            if(cnt==0)
            {
                pre=numbers[i];
                cnt=1;
            }
            else if(numbers[i]==pre)
            {
                cnt++;
            }
            else
            {
                cnt--;
            }
        }
        cnt=0;
        for(int i=0;i<numbers.size();i++)
        {
            if(numbers[i]==pre)
                cnt++;
        }
        if(cnt>(numbers.size())/2)
            return pre;
        else return 0;
    }
};
剑指offer 面试题64 数据流的中位数的更多相关文章
- 剑指Offer:面试题15——链表中倒数第k个结点(java实现)
		
问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...
 - 剑指offer面试题3  二维数组中的查找(c)
		
剑指offer面试题三:
 - 剑指Offer——笔试题+知识点总结
		
剑指Offer--笔试题+知识点总结 情景回顾 时间:2016.9.23 12:00-14:00 19:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:笔试 注意事项:要有大局观, ...
 - C++版 - 剑指offer之面试题37:两个链表的第一个公共结点[LeetCode 160] 解题报告
		
剑指offer之面试题37 两个链表的第一个公共结点 提交网址: http://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46?t ...
 - C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解
		
剑指offer 面试题23:从上往下打印二叉树 参与人数:4853 时间限制:1秒 空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2 ...
 - C++版 - 剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解
		
剑指offer 面试题39:判断平衡二叉树 提交网址: http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId= ...
 - Leetcode - 剑指offer 面试题29:数组中出现次数超过一半的数字及其变形(腾讯2015秋招 编程题4)
		
剑指offer 面试题29:数组中出现次数超过一半的数字 提交网址: http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163 ...
 - C++版 - 剑指Offer 面试题39:二叉树的深度(高度)(二叉树深度优先遍历dfs的应用) 题解
		
剑指Offer 面试题39:二叉树的深度(高度) 题目:输入一棵二叉树的根结点,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度.例如:输入二叉树 ...
 - C++版 - 剑指offer 面试题24:二叉搜索树BST的后序遍历序列(的判断) 题解
		
剑指offer 面试题24:二叉搜索树的后序遍历序列(的判断) 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true.否则返回false.假设输入的数组的任意两个 ...
 
随机推荐
- Sharepoint学习笔记—习题系列--70-576习题解析 -(Q109-Q111)
			
Question 109 Your company uses a third-party service to host its SharePoint 2010 site. The hosting ...
 - [Objective-C]关联(objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAssociatedObjects)
			
关联 关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分. 关联特性只有在Mac OS X V10.6以及以后的版本上才是可用的. 在类的定义之外为类增加额外的存储空间 ...
 - 全新的membership框架Asp.net Identity(2)——绕不过的Claims
			
本来想直接就开始介绍Identity的部分,奈何自己挖坑太深,高举高打的方法不行.只能自己默默下载了Katana的源代码研究了好一段时间.发现要想能够理解好用好Identity, Claims是一个绕 ...
 - mysqldump:Couldn't execute 'show create table `tablename`': Table tablename' doesn't exist (1146)
			
遇到了一个错误mysqldump: Couldn't execute 'show create table `CONCURRENCY_ERRORS`': Table INVOICE_OLD.CONCU ...
 - SQL SERVER 临时表的排序问题
			
在SQL SERVER 2005/2008中,如果将有序的记录插入临时表,则从临时表查询出来的记录是有序的(不依赖ORDER BY也是有序状态),但是从SQL SERVER 2012开始,即使插入的记 ...
 - 客户端连接RMS服务,报:服务暂时不可用,请确保已连接到此服务器…….
			
原因在于客户端office没有安装rms服务模块,或安装的office有缺陷,请重新安装可用的office版本.
 - Windows 设置Mongodb
			
安装MongoDB 将解压所得的bin文件夹内文件部署于C:\mongodb\bin 建立数据库文件夹 C:\mongodb\data\db 准备以下内容的配置文件mongodb.cfg dbpath ...
 - 区块链是伟大的,比特币则不然。《FinTech,金融科技时代的来临》。3星。
			
本书讲技术给金融业带来的变革和可能的趋势.作者认为区块链是伟大的发明,因为他可以让金融交易免费且实时地进行.比特币则可能会被其他区块链技术取代.书中有至少一半的内容涉及到了区块链和比特币.总体评价3星 ...
 - Azure机器学习入门(一)
			
我们开始深入学习Azure机器学习的基本原理并为您开启伟大的数据科学之门.Azure 机器学习的一个重要特征就是在构建预测分析方案时,它能够方便地将开发模式集成为可重复的工作流模式.这就使得Azure ...
 - Markdown 完全指南
			
概述 Markdown 是一种用于网络文本书写的轻量级标记语言,广泛用于个人 blog.github.wiki 中.其实浏览器并不能识别 Markdown 的语法,但许多 blog.wiki 平台以及 ...