js題解LeetCode1051 高度檢查器哈希表對比
解題思路
方法一,實際上我們并不需要給heights進行排序,我們需要的只是從前往后遍歷heights,找到在當前位置上是不是應該出現(xiàn)的最小的數字,因此
我們創(chuàng)建一個數組,存儲所有出現(xiàn)的數字的次數,由于題目已經限制 heights 長度最大為 100,直接創(chuàng)建 100 長度的數組通過下標保存計數器即可,如果不定長度或者長度較大就得通過 map 處理然后對 map 排序了
遍歷heights,在數組中存儲所有數字出現(xiàn)的次數,同時找到最小值作為數組判斷的起點
再遍歷一遍 heights,判斷當前遍歷項是否跟目標下標一致,如果不一致結果+1,一致就不用管了,然后把計數器-1,直到 0
如果當前下標的值為 0 了,就證明heights中出現(xiàn)的該下邊的數字次數已經用光了,直接迭代找到下一個不為 0 的下標繼續(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 高度檢查器哈希表對比的詳細內容,更多關于js高度檢查器哈希表對比的資料請關注腳本之家其它相關文章!
相關文章
umi插件開發(fā)仿dumi項目實現(xiàn)基礎路由解析
這篇文章主要為大家介紹了umi插件開發(fā)仿dumi項目實現(xiàn)基礎路由解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01THREE.js添加多個castShadow光源報錯解決及原因分析
這篇文章主要介紹了THREE.js添加多個castShadow的光源報錯解決及原因分析2023-06-06自行實現(xiàn)Promise.allSettled的Polyfill處理
這篇文章主要為大家介紹了自行實現(xiàn)Promise.allSettled?的?Polyfill處理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08