题目简介:
给你一个整数数组 arr
,请你删除最小 5%
的数字和最大 5%
的数字后,剩余数字的平均值。
与 标准答案 误差在 10^-5
的结果都被视为正确结果。
示例 1:
1 2 3
| 输入:arr = [1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3] 输出:2.00000 解释:删除数组中最大和最小的元素后,所有元素都等于 2,所以平均值为 2 。
|
示例 2:
1 2
| 输入:arr = [6,2,7,5,1,2,0,3,10,2,5,0,5,5,0,8,7,6,8,0] 输出:4.00000
|
提示:
20 <= arr.length <= 1000
arr.length
是 20
的 倍数
0 <= arr[i] <= 105
思路:
排序,然后忽略前5%和后5%的元素即可。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class Solution { public: double trimMean(vector<int>& arr) {
sort(arr.begin(), arr.end());
double res = 0.0;
int size_res = arr.size() - arr.size() * 0.1; for(int i = arr.size() * 0.05; i < arr.size() - arr.size() * 0.05; i++) res += arr[i];
res = res / size_res * 1.0;
return res;
} };
|