JS題解leetcode去掉最低工資和最高工資后的工資平均值
題目
- 給你一個(gè)整數(shù)數(shù)組
salary,數(shù)組里每個(gè)數(shù)都是 唯一 的,其中salary[i]是第i個(gè)員工的工資。 - 請(qǐng)你返回去掉最低工資和最高工資以后,剩下員工工資的平均值。
示例
示例 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 <= 10010^3 <= salary[i] <= 10^6salary[i]是唯一的。- 與真實(shí)值誤差在
10^-5以內(nèi)的結(jié)果都將視為正確答案。
代碼
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);
};
- 首先將原數(shù)組排序,這樣排序后的新數(shù)組會(huì)將最大值和最小值放在數(shù)組的第一位和最后一位
- 遍歷新數(shù)組,因?yàn)橐懦畲笾岛妥钚≈担苑秶鷱臄?shù)組的第二位到倒數(shù)第二位,將每一項(xiàng)的值進(jìn)行累加
- 將累加和除以總共累計(jì)的項(xiàng)數(shù)返回(總項(xiàng)數(shù)是數(shù)組的長(zhǎng)度,排除首尾兩項(xiàng),累加項(xiàng)數(shù)為總長(zhǎng)度減去
2) - 采用先排序后遍歷累加的方法,時(shí)間復(fù)雜度較高,因?yàn)榕判蛞蚕臅r(shí)間
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
};
優(yōu)化版:
- 先利用
Math.max和Math.min將數(shù)組的最大值和最小值找到 - 然后利用數(shù)組方法
splice將最大值和最小值從原數(shù)組中刪除(splice方法改變?cè)瓟?shù)組的長(zhǎng)度) - 最后使用數(shù)組的
reduce方法將數(shù)組求和 - 最后將刪除最大值和最小值的數(shù)組和除以數(shù)組長(zhǎng)度,得到平均值返回
- 時(shí)間消耗和上面差不太多,內(nèi)存消耗比上面少一些
以上就是JS題解leetcode去掉最低工資和最高工資后的工資平均值的詳細(xì)內(nèi)容,更多關(guān)于JS題解leetcode工資平均值的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
微信小程序簡(jiǎn)潔登錄頁(yè)面的實(shí)現(xiàn)(附源碼)
本文主要介紹了微信小程序簡(jiǎn)潔登錄頁(yè)面的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
利用d3.js實(shí)現(xiàn)蜂巢圖表帶動(dòng)畫效果
這篇文章主要給大家介紹了關(guān)于如何利用d3.js實(shí)現(xiàn)蜂巢圖表帶動(dòng)畫效果的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用d3.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
electron多標(biāo)簽頁(yè)模式更像客戶端的實(shí)現(xiàn)示例
本文主要介紹了electron多標(biāo)簽頁(yè)模式更像客戶端,通過(guò)創(chuàng)建和管理多個(gè)網(wǎng)頁(yè)視圖或使用現(xiàn)成組件來(lái)實(shí)現(xiàn)類似Web瀏覽器的標(biāo)簽頁(yè)功能,具有一定的參考價(jià)值,感興趣的可以了解一下2024-11-11
JavaScript用20行代碼實(shí)現(xiàn)虎年春節(jié)倒計(jì)時(shí)
春節(jié)將至,相信大家跟小編一樣很激動(dòng)呀。為了迎接虎年春節(jié)到來(lái),小編為大家準(zhǔn)備了一個(gè)虎年春節(jié)倒計(jì)時(shí),僅20行代碼用js就實(shí)現(xiàn)啦。感興趣的可以動(dòng)手試一試2022-01-01
javascript實(shí)現(xiàn)的textarea運(yùn)行框效果代碼 不用指定id批量指定
今天在寫一個(gè)網(wǎng)頁(yè)的時(shí)候用到了N多嵌套在textarea標(biāo)簽里的代碼,定義雙擊運(yùn)行其內(nèi)的代碼段。但是每次創(chuàng)建一個(gè)這樣的可運(yùn)行的實(shí)例都要給textarea元素自定義一個(gè)id值和寫入雙擊事件,好不麻煩。2009-12-12
JavaScript lodash常見用法系列小結(jié)
本篇文章主要介紹了JavaScript lodash用法小結(jié),非常不錯(cuò),具有參考借鑒價(jià)值,對(duì)于Javascript lodash教程感興趣的同學(xué)可以參考一下2016-08-08

