js題解LeetCode1051 高度檢查器哈希表對(duì)比
解題思路
方法一,實(shí)際上我們并不需要給heights進(jìn)行排序,我們需要的只是從前往后遍歷heights,找到在當(dāng)前位置上是不是應(yīng)該出現(xiàn)的最小的數(shù)字,因此
我們創(chuàng)建一個(gè)數(shù)組,存儲(chǔ)所有出現(xiàn)的數(shù)字的次數(shù),由于題目已經(jīng)限制 heights 長(zhǎng)度最大為 100,直接創(chuàng)建 100 長(zhǎng)度的數(shù)組通過(guò)下標(biāo)保存計(jì)數(shù)器即可,如果不定長(zhǎng)度或者長(zhǎng)度較大就得通過(guò) map 處理然后對(duì) map 排序了
遍歷heights,在數(shù)組中存儲(chǔ)所有數(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ù)即可
方法二,比較簡(jiǎn)單,直接對(duì)heights排序,然后逐位對(duì)比即可
代碼
/** * @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 高度檢查器哈希表對(duì)比的詳細(xì)內(nèi)容,更多關(guān)于js高度檢查器哈希表對(duì)比的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
本地搭建微信小程序服務(wù)器的實(shí)現(xiàn)方法
這篇文章主要介紹了本地搭建微信小程序服務(wù)器的實(shí)現(xiàn)方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家輕松的搭建自己的微信小程序的服務(wù)器,需要的朋友可以參考下2017-10-10umi插件開(kāi)發(fā)仿dumi項(xiàng)目實(shí)現(xiàn)基礎(chǔ)路由解析
這篇文章主要為大家介紹了umi插件開(kāi)發(fā)仿dumi項(xiàng)目實(shí)現(xiàn)基礎(chǔ)路由解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01微信小程序?qū)崿F(xiàn)頁(yè)面跳轉(zhuǎn)傳值的方法
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)頁(yè)面跳轉(zhuǎn)傳值的方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10THREE.js添加多個(gè)castShadow光源報(bào)錯(cuò)解決及原因分析
這篇文章主要介紹了THREE.js添加多個(gè)castShadow的光源報(bào)錯(cuò)解決及原因分析2023-06-06自行實(shí)現(xiàn)Promise.allSettled的Polyfill處理
這篇文章主要為大家介紹了自行實(shí)現(xiàn)Promise.allSettled?的?Polyfill處理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08瀏覽器切換到其他標(biāo)簽頁(yè)或最小化js定時(shí)器是否準(zhǔn)時(shí)測(cè)試
這篇文章主要為大家介紹了瀏覽器切換到其他標(biāo)簽頁(yè)或最小化是js定時(shí)器是否準(zhǔn)時(shí)的測(cè)試詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07