Software Enginner πŸ‡―πŸ‡΅ and πŸ‡°πŸ‡·

Leetcode - Average Salary Excluding the Minimum and Maximum Salary

Problem Average Salary Excluding the Minimum and Maximum Salary
Difficulty Easy
Language Java
Time complexity $$O(n)$$
Space complexity $$O(1)$$

Problem,

You are given an array of unique integers salary where salary[i] is the salary of the ithemployee.

Return the average salary of employees excluding the minimum and maximum salary. Answers within 10-5 of the actual answer will be accepted.

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

Solution,

μ²¨μ—λŠ” λ”± 쀑간 κ°’λ§Œ λ½‘μœΌλ©΄ TCκ°€ \(O(n \log_n)\) μ΄λΌμ„œ κ°œκΏ€ μ΄λž¬λŠ”λ° 음~ 문제 읽고 λ°”λ‘œ λ‚˜μ˜ μ°©κ°μ΄λž€κ±Έ μ•Œμ•˜μ£ ~

class Solution {
    public double average(int[] salary) {
        int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE, sl = salary.length;
        double s = 0.0;
        for (int i = 0; i < sl; ++i) {
            min = Math.min(min, salary[i]);
            max = Math.max(max, salary[i]);
            s += salary[i];
        }
        
        return (s - min - max) / (salary.length - 2);
    }
}