1619. Mean of Array After Removing Some Elements

1614. Maximum Nesting Depth of the Parentheses #

题目 #

  • 给你一个整数数组 arr ,请你删除最小 5% 的数字和最大 5% 的数字后,剩余数字的平均值。

  • 标准答案 误差在 10-5 的结果都被视为正确结果。

思路 #

#

排序 #

代码 #

#

class Solution {
    public double trimMean(int[] arr) {
        Queue<Integer> minimum = new PriorityQueue<>((o1, o2) -> o2-o1);
        Queue<Integer> maximum = new PriorityQueue<>();
        int sum = 0;
        for (int num: arr) {
            sum += num;
            
            if (minimum.size() == 0.05 * arr.length) {
                if (num < minimum.peek()) {
                    minimum.poll();
                    minimum.offer(num);
                }
            }
            else minimum.offer(num);
            
            if (maximum.size() == 0.05 * arr.length) {
                if (num > maximum.peek()) {
                    maximum.poll();
                    maximum.offer(num);
                }
            }
            else maximum.offer(num);
        }
        for (int num: minimum) sum -= num;
        for (int num: maximum) sum -= num;
        return (double) sum / (0.9 * arr.length);
    }
}

致谢 #

宫水三叶