• 力扣做题20. 连续中值


    这类型的题以前做过,二分法找中间值,算是温故知新吧

    随机产生数字并传递给一个方法。你能否完成这个方法,在每次产生新值时,寻找当前所有值的中间值(中位数)并保存。

    中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。

    例如,

    [2,3,4] 的中位数是 3

    [2,3] 的中位数是 (2 + 3) / 2 = 2.5

    设计一个支持以下两种操作的数据结构:

    void addNum(int num) - 从数据流中添加一个整数到数据结构中。
    double findMedian() - 返回目前所有元素的中位数。
    示例:

    addNum(1)
    addNum(2)
    findMedian() -> 1.5
    addNum(3)
    findMedian() -> 2

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/continuous-median-lcci
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    /**
     * initialize your data structure here.
     */
    var MedianFinder = function() {
        this.data=[]
    };
    
    /** 
     * @param {number} num
     * @return {void}
     */
    MedianFinder.prototype.addNum = function(num) {
        const data=this.data;
        let left=0;
        let right=data.length;
        let mid=left;
        while(left<right){
            mid=(left+right)>>1;
            if(num>data[mid]){
                left=Math.max(mid,left+1);
            }else if(num<data[mid]){
                right=Math.min(mid,right-1);
            }else if(num===data[mid]){
                left=mid;
                right=mid;
            }
        }
        data.splice(left,0,num)
    };
    
    /**
     * @return {number}
     */
    MedianFinder.prototype.findMedian = function() {
        const data=this.data;
        if(data.length%2===0){
            const mid=data.length/2;
            return (data[mid]+data[mid-1])/2
        }else{
            const mid=data.length>>1;
            return data[mid]
        }
    };
    
    /**
     * Your MedianFinder object will be instantiated and called as such:
     * var obj = new MedianFinder()
     * obj.addNum(num)
     * var param_2 = obj.findMedian()
     */
  • 相关阅读:
    (转)Unity3D研究院之IOS&Android收集Log文件
    (转)C#中的委托(Delegate)和事件(Event)
    c# event Action 判断事件列表中是否存在这个委托
    电子商务 B2C 结构图【转载+整理】
    几个随机算法【转载+整理】
    Windows 2008 R2 配置 DNS 实现二级域名
    Perl、PHP、Python、Java 和 Ruby 比较【转载+整理】
    .NET 托管、非托管、本地:这些代码有什么区别?
    AWR
    HTTP 响应实体主体:XML 及 XML parser
  • 原文地址:https://www.cnblogs.com/caoke/p/16730448.html
Copyright © 2020-2023  润新知