1.LeetCode只出現一次的數字
阿新 • • 發佈:2020-12-27
題目:給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。
你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?
輸入: [4,1,2,1,2]
輸出: 4
知識點:
異或運算子:數學符號⊕ 英文簡稱xor 程式符號^
異或算符的值:一真一假為真,其餘為假
滿足交換律,結合律,恆等律:p ⊕ 0 = p,歸零律:p ⊕ p = 0
0000 1111 (15)
0000 1111
------------
0000 0000
ES6新增加了兩個重要的 JavaScript 關鍵字: let 和 const。增加了for in和for of。
let 宣告的變數只在 let 命令所在的程式碼塊{} 內有效,需要先宣告再使用,let 定義的變數值可以修改。const 宣告一個只讀的常量,宣告時必須進行初始化,且初始化後值不可再修改。
for in迴圈遍歷的是陣列的鍵值(索引),而for of迴圈遍歷的是陣列的值。
思路:異或運算子滿足交換律和結合律
A ^ C ^ B ^ C ^ B ^ A ^ D
= A ^ A ^ B ^ B ^ C ^ C ^ D
= 0 ^ D
= D
function singleNumber(nums) {
let ans = 0;
for(const num of nums) {
ans ^= num;
}
return ans;
}