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.