zoukankan      html  css  js  c++  java
  • 剑指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;
        }
    };
    

      

  • 相关阅读:
    开发趋势
    常用的meta
    meta基础
    HTTP请求方法GET和POST
    same-origin policy----wikipedia
    跨域——同源策略(译)
    DNS问答
    TCP/IP的整理
    鉴权方法
    Web攻击技术---OWASP top
  • 原文地址:https://www.cnblogs.com/wuxiangli/p/6094056.html
Copyright © 2011-2022 走看看