Post

Leetcode 1491. Average Salary Excluding the Minimum and Maximum Salary

You are given an array of unique integers `salary` where `salary[i]` is the salary of the `ith` employee. Return the average salary of employees excluding the minimum and maximum salary. Answers within `10^5` of the actual answer will be accepted.

Description

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

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
  • 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
  • Minimum salary and maximum salary are 1000 and 3000 respectively.
    Average salary excluding minimum and maximum salary is (2000) / 1 = 2000

Constraints:

  • 3 <= salary.length <= 100
  • 1000 <= salary[i] <= 10^6
  • All the integers of salary are unique.

Solution

1
2
3
4
5
6
7
8
class Solution:
    # Mathematical Approach
    # Time Complexity: BigO(1)
    # Space Complexity: BigO(N)
    def average(self, salary: List[int]) -> float:
        salary.remove(max(salary))
        salary.remove(min(salary))
        return sum(salary) / len(salary)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
 * Sort and Iterate
 * Time Complexity: BigO(N)
 * Space Complexity: BigO(N)
 */
function average(salary: number[]): number {
  const list = salary.sort((a, b) => a - b);
  return list.reduce((acc, cur, ind) => {
    if (ind !== 0 && ind !== list.length - 1) {
      return (acc += cur);
    } else if (ind === list.length - 1) {
      return acc / (list.length - 2);
    } else {
      return (acc = 0);
    }
  }, 0);
}
This post is licensed under CC BY 4.0 by the author.