天池 在线编程 中位数

文章目录

1. 题目

描述
给定一个长度为N的整数数组arr
返回一个长度为N的整数答案数组ans
ans[i] 表示删除arr数组第i个数后,arr数组的中位数

N为偶数 2 <= N <= 10^5

示例

输入:[1,2,3,4,5,6]
输出:[4,4,4,3,3,3]
解释:删去1后 剩下的数组为[2,3,4,5,6]中位数为4
删去4后,剩下的数组为[1,2,3,5,6]中位数为3

来源:https://tianchi.aliyun.com/oj/141742855745988779/153294680351772732

2. 解题

class Solution {
public:
    /**
     * @param arr: an integer array
     * @return: return the median array when delete a number
     */
    vector<int> getMedian(vector<int> &arr) {
        // write your code here
        vector<int> t = arr;
        sort(t.begin(), t.end());//排序
        int n = arr.size()/2;//中间的数
        vector<int> ans(arr.size());
        for(int i = 0; i < arr.size(); ++i)
        {
            if(arr[i] >= t[n])//如果原数组的数大于等于 中间的数
                ans[i] = t[n-1];//中位数为排序后的 中间数的前一个
            else
                ans[i] = t[n];
        }
        return ans;
    }
};

201ms C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页