题目描述
思路
排序
设元素数目为n,先对数组进行从小到大排序,然后对区间[n/20,19n/20)内的元素进行求和,得到未删除的元素的和,返回均值。
Python实现
class Solution:
def trimMean(self, arr: List[int]) -> float:
arr.sort()
n = len(arr)
return sum(arr[n // 20 : -n // 20]) / (n * 0.9)
Java实现
class Solution {
public double trimMean(int[] arr) {
Arrays.sort(arr);
int n = arr.length;
int sum = 0;
for (int i = n / 20; i < 19 * n / 20; i++) {
sum += arr[i];
}
return sum / (n * 0.9);
}
}
C++实现
class Solution {
public:
double trimMean(vector<int>& arr) {
sort(arr.begin(), arr.end());
int n = arr.size();
int sum = accumulate(arr.begin() + n / 20, arr.begin() + (19 * n / 20), 0);
return sum / (n * 0.9);
}
};