Average Salary Excluding the Minimum and Maximum Salary

easy array sorting

Problem

Given salary[] of unique integers, return the average salary after excluding the min and max salaries.

Inputsalary = [4000,3000,1000,2000]
Output2500.0
Exclude 1000 and 4000 → (3000+2000)/2 = 2500.

def average(salary):
    total = mn = mx = 0
    mn, mx = float('inf'), float('-inf')
    for s in salary:
        total += s; mn = min(mn, s); mx = max(mx, s)
    return (total - mn - mx) / (len(salary) - 2)
function average(salary) {
  let sum = 0, mn = Infinity, mx = -Infinity;
  for (const s of salary) { sum += s; if (s < mn) mn = s; if (s > mx) mx = s; }
  return (sum - mn - mx) / (salary.length - 2);
}
class Solution {
    public double average(int[] salary) {
        long sum = 0; int mn = Integer.MAX_VALUE, mx = Integer.MIN_VALUE;
        for (int s : salary) { sum += s; mn = Math.min(mn, s); mx = Math.max(mx, s); }
        return (double)(sum - mn - mx) / (salary.length - 2);
    }
}
double average(vector& salary) {
    long long sum = 0; int mn = INT_MAX, mx = INT_MIN;
    for (int s : salary) { sum += s; mn = min(mn, s); mx = max(mx, s); }
    return (double)(sum - mn - mx) / (salary.size() - 2);
}
Time: O(n) Space: O(1)