维护一个链表,插入,然后取,就很简单了

数据流中的中位数

http://www.nowcoder.com/questionTerminal/9be0172896bd43948f8a32fb954e1be1

随便乱写的,代码很乱也不管了

class Solution {
public:
    struct linklist{
        int val;
        linklist *next;
        linklist(int x):
                val(x),next(nullptr){
        }
    };
    linklist *head = new linklist(0);
    int size = 0;

    void Insert(int num){
        linklist *ptr = head;
        linklist *pre = ptr;
        if(size == 0){
            head -> val = num;
            size ++;
            return;
        }
        while(ptr && num > ptr->val){
            pre = ptr;
            ptr = ptr -> next;
        }
        if(pre == ptr){
            linklist *tmp = new linklist(num);
            tmp->next = ptr;
            size ++;
            head = tmp;
        }
        else{
            linklist *tmp = new linklist(num);
            tmp->next = ptr;
            pre->next = tmp;
            size++;
        }
    }

    double GetMedian(){ 
        linklist *nptr = head;
        double ret=0;
        if(size%2 == 1){
            for(int i=0;i<size/2;i++){
                nptr = nptr->next;
            }
            return nptr->val;
        }
        else{
            for(int i=0;i<size/2-1;i++){
                nptr = nptr->next;
            }
            ret += nptr->val;
            nptr = nptr->next;
            ret += nptr->val;
            ret /= 2;
            return ret;
        }
    }

};
全部评论

相关推荐

过往烟沉:我说什么来着,java就业面就是广!
点赞 评论 收藏
分享
牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务