Leetcode面试题17.20_连续中值
题目地址
实现一个数列的动态添加和查询中位数。
- 复杂点的话应该可以写个平衡树什么的,然后查询第k大,还可以删除数字。
- 简单点的话显然可以维护两个堆,一个大顶堆一个小顶堆,而且大顶堆最多比小顶堆多一个,这样查询就直接取大顶堆top元素或者两个堆top元素平均值。
- 添加的话,如果小于大顶堆top,就加入大顶堆,否则加入小顶堆,然后再根据size大小关系调整一下,因为最多只要调整一次,所以复杂度nlogn是对的。
code
class MedianFinder {
public:
    /** initialize your data structure here. */
    priority_queue<int> le;
    priority_queue<int,vector<int>,greater<int>> ri;
    int siz;
    MedianFinder() {
        le.push(INT_MIN);
        ri.push(INT_MAX);
        siz=0;
    }
    void addNum(int num) {
        int lmx=le.top();
        if(num<lmx){
            le.push(num);
        }else{
            ri.push(num);
        }
        if(le.size()>ri.size()+1){
            ri.push(le.top());
            le.pop();
        }else if(le.size()<ri.size()){
            le.push(ri.top());
            ri.pop();
        }
        siz++;
    }
    double findMedian() {
        if(siz%2){
            return le.top()*1.0;
        }else{
            return (le.top()+ri.top())*0.5;
        }
    }
};
/**
 * Your MedianFinder object will be instantiated and called as such:
 * MedianFinder* obj = new MedianFinder();
 * obj->addNum(num);
 * double param_2 = obj->findMedian();
 */
Leetcode面试题17.20_连续中值的更多相关文章
- leetcode面试题 17.16. 按摩师
		leetcode面试题 17.16. 按摩师 又一道动态规划题目 动态规划的核心就是总结出一个通行的方程. 但是这道题似乎不太适合使用递归的方式. 所以使用for循环遍历数组. class Solut ... 
- LeetCode 面试题56 - I. 数组中数字出现的次数 | Python
		面试题56 - I. 数组中数字出现的次数 题目 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). ... 
- 力扣Leetcode 面试题56 - I. 数组中数字出现的次数
		面试题56 - I. 数组中数字出现的次数 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). 示例 ... 
- leetcode 面试题 17.22. 单词转换(DFS+回溯)
		题目描述 思路分析 这题回溯,先想出它的空间解是什么,这里空间解,其实就是给的原字符串到结束字符串中间的变形过程,那么就可以容易的画出一个解空间树,用深度搜索进行搜索, 剪枝后,进入下一个维度,再进行 ... 
- Leetcode - 剑指offer 面试题29:数组中出现次数超过一半的数字及其变形(腾讯2015秋招 编程题4)
		剑指offer 面试题29:数组中出现次数超过一半的数字 提交网址: http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163 ... 
- 【算法训练营day4】LeetCode24. 两两交换链表中的结点 LeetCode19. 删除链表的倒数第N个结点 LeetCode面试题 02.07. 链表相交 LeetCode142. 环形链表II
		[算法训练营day4]LeetCode24. 两两交换链表中的结点 LeetCode19. 删除链表的倒数第N个结点 LeetCode面试题 02.07. 链表相交 LeetCode142. 环形链表 ... 
- 数学之路-python计算实战(17)-机器视觉-滤波去噪(中值滤波)
		Blurs an image using the median filter. C++: void medianBlur(InputArray src, OutputArray dst, int ks ... 
- C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介
		目录 为什么要刷LeetCode 刷LeetCode有哪些好处? LeetCode vs 传统的 OJ LeetCode刷题时的心态建设 C#如何刷遍LeetCode 选项1: VS本地Debug + ... 
- C#刷遍Leetcode面试题系列连载(2): No.38 - 报数
		目录 前言 题目描述 相关话题 相似题目 解题思路: 运行结果: 代码要点: 参考资料: 文末彩蛋 前言 前文传送门: C# 刷遍 Leetcode 面试题系列连载(1) - 入门与工具简介 上篇文章 ... 
随机推荐
- dp - 求符合题意的序列的个数
			The sequence of integers a1,a2,…,ak is called a good array if a1=k−1 and a1>0. For example, the s ... 
- 算法笔记codeup-Contest100000568
			A #include <stdio.h> int main() { ; ; while(a) { sum=sum+a; a--; } printf("%d",sum); ... 
- 16. 产生Javadoc
			过程与export >> javadoc一致,需要注意的是字符集的设置. -encoding UTF-8 -charset UTF-8 export >> javadoc : ... 
- pandas DF去重
			实例 import pandas as pd data=pd.DataFrame({'产品':['A','A','A','A'],'数量':[50,50,30,30]}) 去重 data.drop_d ... 
- CSS中的定位体系
			一.概述 1.什么是定位体系 视觉格式化模型规定,定位体系共有三种 a.常规流(normal flow) b.浮动(float) ... 
- 前端 network
			控制台 :https://blog.csdn.net/m0_37724356/article/details/79884006 原文链接:https://segmentfault.com/a/1190 ... 
- day04_IDEA、方法
			day04_IDEA.方法 1.快捷输入 psvm:public static void main(String[] args){ } sout:System.out.print("&quo ... 
- linux之nfs
			之前一篇博客记录了Windows系统与Linux系统文件共享的最佳选择,此篇记录Linux系统与Linux系统之间文件共享的最佳选择----NFS 一.NFS 简介和架构图 NFS是Network F ... 
- 利用jQuery动态添加input输入框,并且获取他的值
			动态添加 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnco ... 
- used in key specification without a key length
			官方的解释: The error happens because MySQL can index only the first N chars of a BLOB or TEXT column. So ... 
