# 去掉最低工资和最高工资后的工资平均值(1491)

# 题目

给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。

请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。

# 示例

输入:salary = [4000,3000,1000,2000] 输出:2500.00000

解释:最低工资和最高工资分别是 1000 和 4000 。去掉最低工资和最高工资以后的平均工资是 (2000+3000)/2= 2500

# 提示

  • 3 <= salary.length <= 100
  • 10^3 <= salary[i] <= 10^6
  • salary[i] 是唯一的。
  • 与真实值误差在 10^-5 以内的结果都将视为正确答案。

# 算法

# 模拟

注意:使用reduce()时,需要第二个参数传入0作为默认的第一次的accumulator,否则第一次循环时的current将会是数组的第二项,在获取最大最小值时会出错

export const average = (salary) => {
	let min = +Infinity,
		max = -Infinity;
	let sum = salary.reduce((acc, cur) => {
		min = Math.min(cur, min);
		max = Math.max(cur, max);
		return acc + cur;
	}, 0);
	return (sum - min - max) / (salary.length - 2);
};
1
2
3
4
5
6
7
8
9
10