JavaScript 只出現一次的數字 給定一個非空整數數組,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。

給定一個非空整數數組,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。

說明:

你的算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?

示例 1:

輸入: [2,2,1]
輸出: 1
示例 2:

輸入: [4,1,2,1,2]
輸出: 4

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/single-number
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

var singleNumber = function(nums) {
    // 方法一
    var obj = {};
    for (var i = 0; i < nums.length; i++) {
        var item = nums[i];
        if (!obj[item]) {
            obj[item] = 1;
        } else {
            obj[item] += 1;
        }
    }
    for (var k in obj) {
        if (obj[k] == 1) {
            return k
        }
    }
    // 方法二 異或運算
    let ans = 0;
    for(const num of nums) {
        ans ^= num;
    }
    return ans;

};

^=  異或運算

這個運算符主要是在位運算的時候使用,但是在普通的數也能使用,且有一個轉換過程,即將二進制的數轉換爲十進制

舉例
 

var a = 1 ^ 2;
//3
//1 -> 01
//2 -> 10
//1 ^ 2 -> 11 -> 3

var a = 3 ^ 2;
// 11 ^ 10 = 01 -> 1

同或運算 

運算法則爲a同或b=ab+a‘b’(a'爲非a),即a和b相同爲真,不同爲假。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章