js題解LeetCode1051 高度檢查器哈希表對比
解題思路

方法一,實(shí)際上我們并不需要給heights進(jìn)行排序,我們需要的只是從前往后遍歷heights,找到在當(dāng)前位置上是不是應(yīng)該出現(xiàn)的最小的數(shù)字,因此
我們創(chuàng)建一個(gè)數(shù)組,存儲所有出現(xiàn)的數(shù)字的次數(shù),由于題目已經(jīng)限制 heights 長度最大為 100,直接創(chuàng)建 100 長度的數(shù)組通過下標(biāo)保存計(jì)數(shù)器即可,如果不定長度或者長度較大就得通過 map 處理然后對 map 排序了
遍歷heights,在數(shù)組中存儲所有數(shù)字出現(xiàn)的次數(shù),同時(shí)找到最小值作為數(shù)組判斷的起點(diǎn)
再遍歷一遍 heights,判斷當(dāng)前遍歷項(xiàng)是否跟目標(biāo)下標(biāo)一致,如果不一致結(jié)果+1,一致就不用管了,然后把計(jì)數(shù)器-1,直到 0
如果當(dāng)前下標(biāo)的值為 0 了,就證明heights中出現(xiàn)的該下邊的數(shù)字次數(shù)已經(jīng)用光了,直接迭代找到下一個(gè)不為 0 的下標(biāo)繼續(xù)即可
方法二,比較簡單,直接對heights排序,然后逐位對比即可
代碼
/**
* @param {number[]} heights
* @return {number}
*/
var heightChecker = function (heights) {
const arr = new Array(100).fill(0)
let t = 0
let idx = 101
heights.forEach(item => {
arr[item]++
if (item < idx) idx = item
})
heights.forEach(item => {
if (item !== idx) {
t++
}
arr[idx]--
while (arr[idx] === 0) {
idx++
}
})
return t
};
???????var heightChecker = function (heights) {
const h = JSON.parse(JSON.stringify(heights))
const arr = heights.sort((a, b) => a - b)
let t = 0
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== h[i]) t++
}
return t
};
以上就是js題解LeetCode1051 高度檢查器哈希表對比的詳細(xì)內(nèi)容,更多關(guān)于js高度檢查器哈希表對比的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JavaScript實(shí)現(xiàn)優(yōu)先級隊(duì)列
這篇文章主要介紹了JavaScript如何實(shí)現(xiàn)優(yōu)先級隊(duì)列,在計(jì)算機(jī)里,隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)。就跟我們平時(shí)排隊(duì)一樣,先到的排在前面,前面的優(yōu)先處理,下面我們就來看看在JavaScript里面的優(yōu)先隊(duì)列又當(dāng)如何2021-12-12
JS網(wǎng)頁repaint與reflow?的區(qū)別及優(yōu)化方式
這篇文章主要為大家介紹了JS網(wǎng)頁repaint與reflow?的區(qū)別及優(yōu)化方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
微信小程序封裝http訪問網(wǎng)絡(luò)庫實(shí)例代碼
這篇文章主要介紹了微信小程序封裝http訪問網(wǎng)絡(luò)庫實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-05-05
electron創(chuàng)建新窗口模態(tài)框并實(shí)現(xiàn)主進(jìn)程傳值給子進(jìn)程
這篇文章主要為大家介紹了electron創(chuàng)建新窗口模態(tài)框并實(shí)現(xiàn)主進(jìn)程傳值給子進(jìn)程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
js二進(jìn)制數(shù)據(jù)及其互相轉(zhuǎn)化實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了js二進(jìn)制數(shù)據(jù)及其互相轉(zhuǎn)化實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02

