JS题解leetcode去掉最低工资和最高工资后的工资平均值

 更新时间:2022年12月22日 15:14:03   作者:外语狂魔陈清泉  
这篇文章主要为大家介绍了JS题解leetcode去掉最低工资和最高工资后的工资平均值,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

题目 

leetcode.cn/

  • 给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。
  • 请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。

示例

示例 1:

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

输出: 2500.00000

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

示例 2:

输入: salary = [1000,2000,3000]

输出: 2000.00000

解释: 最低工资和最高工资分别是 1000 和 3000 。去掉最低工资和最高工资以后的平均工资是 (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 <= 100
  • 10^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);
};
  • 首先将原数组排序,这样排序后的新数组会将最大值和最小值放在数组的第一位和最后一位
  • 遍历新数组,因为要排除最大值和最小值,所以范围从数组的第二位到倒数第二位,将每一项的值进行累加
  • 将累加和除以总共累计的项数返回(总项数是数组的长度,排除首尾两项,累加项数为总长度减去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.maxMath.min将数组的最大值和最小值找到
  • 然后利用数组方法splice将最大值和最小值从原数组中删除(splice方法改变原数组的长度
  • 最后使用数组的reduce方法将数组求和
  • 最后将删除最大值和最小值的数组和除以数组长度,得到平均值返回
  • 时间消耗和上面差不太多,内存消耗比上面少一些

以上就是JS题解leetcode去掉最低工资和最高工资后的工资平均值的详细内容,更多关于JS题解leetcode工资平均值的资料请关注脚本之家其它相关文章!

相关文章

  • js中递归函数的使用介绍

    js中递归函数的使用介绍

    所谓的递归函数就是在函数体内调用本函数。使用递归函数一定要注意,处理不当就会进入死循环。递归函数只有在特定的情况下使用 ,比如阶乘问题
    2012-10-10
  • 微信小程序简洁登录页面的实现(附源码)

    微信小程序简洁登录页面的实现(附源码)

    本文主要介绍了微信小程序简洁登录页面的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 利用d3.js实现蜂巢图表带动画效果

    利用d3.js实现蜂巢图表带动画效果

    这篇文章主要给大家介绍了关于如何利用d3.js实现蜂巢图表带动画效果的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用d3.js具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • electron多标签页模式更像客户端的实现示例

    electron多标签页模式更像客户端的实现示例

    本文主要介绍了electron多标签页模式更像客户端,通过创建和管理多个网页视图或使用现成组件来实现类似Web浏览器的标签页功能,具有一定的参考价值,感兴趣的可以了解一下
    2024-11-11
  • JavaScript用20行代码实现虎年春节倒计时

    JavaScript用20行代码实现虎年春节倒计时

    春节将至,相信大家跟小编一样很激动呀。为了迎接虎年春节到来,小编为大家准备了一个虎年春节倒计时,仅20行代码用js就实现啦。感兴趣的可以动手试一试
    2022-01-01
  • javascript实现的textarea运行框效果代码 不用指定id批量指定

    javascript实现的textarea运行框效果代码 不用指定id批量指定

    今天在写一个网页的时候用到了N多嵌套在textarea标签里的代码,定义双击运行其内的代码段。但是每次创建一个这样的可运行的实例都要给textarea元素自定义一个id值和写入双击事件,好不麻烦。
    2009-12-12
  • JavaScript DOM 添加事件

    JavaScript DOM 添加事件

    这是我在给库中添加事件的时候写的添加事件的方法!这个方法实现了跨浏览器之间的方法!
    2009-02-02
  • NestJs 静态目录配置详解

    NestJs 静态目录配置详解

    这篇文章主要介绍了NestJs 静态目录配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Javascript作用域和作用域链原理解析

    Javascript作用域和作用域链原理解析

    这篇文章主要介绍了Javascript作用域和作用域链原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • JavaScript lodash常见用法系列小结

    JavaScript lodash常见用法系列小结

    本篇文章主要介绍了JavaScript lodash用法小结,非常不错,具有参考借鉴价值,对于Javascript lodash教程感兴趣的同学可以参考一下
    2016-08-08

最新评论