JavaScript 实现 LeetCode 移除最低工资与最高工资后的平均值计算
本文详细解析 LeetCode 中移除最低工资和最高工资后计算剩余员工平均工资的问题。文章提供了两种 JavaScript 实现方案:第一种通过数组排序定位极值并遍历累加,逻辑直观但时间复杂度较高;第二种利用 Math.max/min 结合 splice 移除极值后求和,内存消耗相对较少。文中包含完整代码示例、复杂度分析及示例解释,帮助开发者理解不同实现路径的优劣。
题目描述
题目来源:leetcode.cn/
- 给定一个整数数组
salary,其中每个元素均为唯一值。数组中的salary[i]代表第i位员工的薪资数据。 - 要求计算在剔除数组中的最低薪资和最高薪资后,剩余所有员工薪资的平均值。
示例说明
示例 1:
输入:salary = [4000,3000,1000,2000]
输出:2500.00000
解析:该数组中最低薪资为 1000,最高薪资为 4000。剔除这两个值后,剩余薪资为 2000 和 3000,其平均值为 (2000 + 3000) / 2 = 2500。
示例 2:
输入:salary = [1000,2000,3000]
输出:2000.00000
解析:最低薪资为 1000,最高薪资为 3000。剔除后仅剩 2000,平均值为 2000 / 1 = 2000。
示例 3:
输入:salary = [6000,5000,4000,3000,2000,1000]
输出:3500.00000
示例 4:
输入:salary = [8000,9000,2000,3000,6000,1000]
输出:4750.00000
约束条件
3 <= salary.length <= 10010^3 <= salary[i] <= 10^6- 数组
salary[i]中的元素互不相同。 - 计算结果与真实值的误差在
10^-5范围内即视为正确。
代码实现
function average(salary: number[]): number {
let sortSalary = salary.sort((a, b) => { return a - b; });
let sum = 0;
for(let i = 1; i < sortSalary.length - 1; i++){
sum += sortSalary[i];
}
return sum / (sortSalary.length - 2);
};
- 方案一:排序法。首先对原数组进行升序排序,排序后最小值位于索引 0,最大值位于索引 length-1。
- 接着遍历排序后的数组,从索引 1 开始至 length-2 结束(即排除首尾两个元素),将中间所有元素累加求和。
- 最后,将累加总和除以有效元素的个数并返回结果。有效元素个数为原数组长度减去被剔除的首尾两项,即 length -
2。 - 该方法虽然逻辑简单,但由于涉及排序操作,时间复杂度较高,整体性能受排序算法耗时影响。
function average(salary: number[]): number {
let max = Math.max(...salary);
let min = Math.min(...salary);
salary.splice(salary.indexOf(max), 1);
salary.splice(salary.indexOf(min), 1);
let sum = salary.reduce((next, pre) => {
return next + pre
}, 0)
return sum / salary.length
};
方案二:极值查找与移除法。
- 首先利用
Math.max和Math.min函数分别找出数组中的最大值和最小值。 - 随后使用数组方法
splice将找到的最大值和最小值从原数组中移除。需要注意的是,splice方法改变原数组的长度。 - 接着调用数组的
reduce方法对移除极值后的剩余数组元素进行求和计算。 - 最后,将求和结果除以剩余数组的长度,得到平均值并返回。
- 此方案的时间消耗与排序法相近,但在内存使用方面相对节省。
以上为 JavaScript 解决 LeetCode 移除最低工资与最高工资后计算平均工资问题的详细解析,更多相关 JS 算法题解及资料请参阅本站其他文章。
JS处理含Emoji或中文的字符串转数组乱码问题
2026-11-05 16:12:28
JS怎么使用展开运算符合并对象
2026-11-05 14:42:18
ES6+环境下判断JS对象为空的简洁写法
2026-11-05 12:12:23
怎么通过replacer函数自定义JS中JSON的格式化输出
2026-11-05 11:19:44
JS正则表达式基础:字面量与RegExp构造函数的区别及常用元字符
2026-11-05 11:16:58
