题解 | #数据流中的中位数#

数据流中的中位数

https://www.nowcoder.com/practice/9be0172896bd43948f8a32fb954e1be1

方法:插入排序

具体步骤:

1、当数组为空时,直接插入数据;当数组不为空时,遍历数组寻找合适的位置进行插入;这样得到的数组就行排序好的。 2、获取数据流的中位数。

时间复杂度:o(n)。

空间复杂度:o(n)。

class Solution {
  public:
    vector<int> res;
    void Insert(int num) {
	  	//数组为空时,直接插入数据
        if (res.empty())
            res.push_back(num);
	  	//数组不为空时,需要找对位置插入数据
        else {
            int i = 0;
            while (num >= res[i] && i < res.size()) {
                i++;
            }
            res.insert(res.begin() + i, num);
        }
    }

    double GetMedian() {
        int length = res.size();
        if (length % 2 == 1)
            return res[length / 2];
        else {
            double num1 = res[length / 2];
            double num2 = res[length / 2 - 1];
            return (num1 + num2) / 2;
        }
    }
};

上述方法插入时,寻找位置可以使用二分查找,而不是直接遍历,能够降低时间复杂度。

刷题题解(c++) 文章被收录于专栏

算法题题解(c++)

全部评论

相关推荐

Beeee0927:正确的建议
点赞 评论 收藏
分享
ming_ri:“很抱歉,您的简历和我们当前的职位需求不是很匹配”
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务