SOURCE

// 给定一个整数数组,除了一个数字之外,其余的数字均出现了两次。
// 请找出这个只出现了一次的数。

// const arr = [10, 2, 2 , 1, 0, 0, 10]
// findSingle(arr) // 1
// 你的实现的时间空间复杂度是怎样的?能否做的更好。

/**
 * @param {number[]} arr
 * @returns number
 */
// function findSingle(arr) {
//     // your code here
//     const obj = {};
//     let result;

//     for(let item of arr) {
//         if(!obj[item]) {
//             obj[item] = 1;
//         }else {
//             obj[item] += 1;
//         }
//     };

//     Object.entries(obj).forEach((item) => {
//         const [key,value] = item;

//         if(value === 1) {
//             result = key;
//         };
//     });

//     return result;
// };

// function findSingle(arr) {
//     let result = 0;

//     for(let num of arr) {
//         result ^= num;
//     };

//     return result;
// };

function findSingle(arr) {
    const count = new Map();

    for (let num of arr) {
        count.set(num,(count.get(num) || 0) + 1);
    };

    for(let [num,cnt] of count) {
        if(cnt % 2 === 1) return num;
    };
};

const arr = [10, 2, 2, 1, 0, 0, 10]
console.log(findSingle(arr));
// findSingle(arr) // 1

console.log(1 ^ 1,0^ 10 );
console 命令行工具 X clear

                    
>
console