您好,登錄后才能下訂單哦!
本篇內容介紹了“前端JavaScript算法怎么找出只出現一次的數字”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
給定一個非空整數數組,除了某個元素只出現一次以外,其余每個元素均出現兩次。找出那個只出現了一次的元素。
說明:
你的算法應該具有線性時間復雜度。 你可以不使用額外空間來實現嗎?
示例 1:
輸入: [2,2,1]
輸出: 1示例 2:
輸入: [4,1,2,1,2]
輸出: 4
解:
第一個反應用 map 來解,時間復雜度 O(n),是線性的,滿足題意,只不過空間復雜度消耗是 O(n),怎樣降低空間復雜度,在方法二中講;
/** * @param {number[]} nums * @return {number} */ var singleNumber = function(nums) { let map = new Map(); for(let i = 0; i<nums.length;i++){ if(map.has(nums[i])){ map.set(nums[i],map.get(nums[i])+1); }else{ map.set(nums[i],1) } } for(let [key,value] of map.entries()){ if(value===1){ return key } } };
重點當然就是在怎么理解:不使用額外空間來實現
其實就是就要在數組本身上進行操作,異或操作可以幫助我們實現這一點;
異或(eor)是一個數學運算符。它應用于邏輯運算。兩個相等的數異或為0;兩個值不相同,則異或結果為1;一個不為0的數與0異或為這個數本身;
/** * @param {number[]} nums * @return {number} */ var singleNumber = function(nums) { for (var i = 1; i < nums.length; i++) { nums[0] = nums[0] ^ nums[i]; // 把所有的元素都異或到nums[0]上。 } return nums[0]; };
“前端JavaScript算法怎么找出只出現一次的數字”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。