Welcome to Subscribe On Youtube

Formatted question description: https://leetcode.ca/all/1491.html

1491. Average Salary Excluding the Minimum and Maximum Salary (Easy)

Given an array of unique integers salary where salary[i] is the salary of the employee i.

Return the average salary of employees excluding the minimum and maximum salary.

 

Example 1:

Input: salary = [4000,3000,1000,2000]
Output: 2500.00000
Explanation: Minimum salary and maximum salary are 1000 and 4000 respectively.
Average salary excluding minimum and maximum salary is (2000+3000)/2= 2500

Example 2:

Input: salary = [1000,2000,3000]
Output: 2000.00000
Explanation: Minimum salary and maximum salary are 1000 and 3000 respectively.
Average salary excluding minimum and maximum salary is (2000)/1= 2000

Example 3:

Input: salary = [6000,5000,4000,3000,2000,1000]
Output: 3500.00000

Example 4:

Input: salary = [8000,9000,2000,3000,6000,1000]
Output: 4750.00000

 

Constraints:

  • 3 <= salary.length <= 100
  • 10^3 <= salary[i] <= 10^6
  • salary[i] is unique.
  • Answers within 10^-5 of the actual value will be accepted as correct.

Related Topics:
Array, Sort

Solution 1.

  • class Solution {
        public double average(int[] salary) {
            int length = salary.length;
            double sum = 0;
            int max = Integer.MIN_VALUE, min = Integer.MAX_VALUE;
            for (int num : salary) {
                sum += num;
                max = Math.max(max, num);
                min = Math.min(min, num);
            }
            return (sum - max - min) / (length - 2);
        }
    }
    
    ############
    
    class Solution {
        public double average(int[] salary) {
            int s = 0;
            int mi = 10000000, mx = 0;
            for (int v : salary) {
                mi = Math.min(mi, v);
                mx = Math.max(mx, v);
                s += v;
            }
            s -= (mi + mx);
            return s * 1.0 / (salary.length - 2);
        }
    }
    
  • // OJ: https://leetcode.com/problems/average-salary-excluding-the-minimum-and-maximum-salary/
    // Time: O(N)
    // Space: O(1)
    class Solution {
    public:
        double average(vector<int>& A) {
            return (accumulate(begin(A), end(A), 0.) - *max_element(begin(A), end(A)) - *min_element(begin(A), end(A))) / (A.size() - 2);
        }
    };
    
  • class Solution:
        def average(self, salary: List[int]) -> float:
            s = sum(salary) - min(salary) - max(salary)
            return s / (len(salary) - 2)
    
    
    
  • func average(salary []int) float64 {
    	s := 0
    	mi, mx := 10000000, 0
    	for _, v := range salary {
    		s += v
    		mi = min(mi, v)
    		mx = max(mx, v)
    	}
    	s -= (mi + mx)
    	return float64(s) / float64(len(salary)-2)
    }
    
    func max(a, b int) int {
    	if a > b {
    		return a
    	}
    	return b
    }
    
    func min(a, b int) int {
    	if a < b {
    		return a
    	}
    	return b
    }
    
  • function average(salary: number[]): number {
        let max = -Infinity;
        let min = Infinity;
        let sum = 0;
        for (const v of salary) {
            sum += v;
            max = Math.max(max, v);
            min = Math.min(min, v);
        }
        return (sum - max - min) / (salary.length - 2);
    }
    
    
  • impl Solution {
        pub fn average(salary: Vec<i32>) -> f64 {
            let n = salary.len() as i32;
            let mut min = i32::MAX;
            let mut max = i32::MIN;
            let mut sum = 0;
            for &num in salary.iter() {
                min = min.min(num);
                max = max.max(num);
                sum += num;
            }
            f64::from(sum - min - max) / f64::from(n - 2)
        }
    }
    
    
  • class Solution {
        /**
         * @param Integer[] $salary
         * @return Float
         */
        function average($salary) {
            $max = $sum = 0;
            $min = 10 ** 6;
            for ($i = 0; $i < count($salary); $i++) {
                $min = min($min, $salary[$i]);
                $max = max($max, $salary[$i]);
                $sum += $salary[$i];
            }
            return ($sum - $max - $min) / (count($salary) - 2);
        }
    }
    

All Problems

All Solutions