Tcdian / keep

今天不想做,所以才去做。
MIT License
5 stars 1 forks source link

260. Single Number III #268

Open Tcdian opened 3 years ago

Tcdian commented 3 years ago

260. Single Number III

给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。

Example

Input:  [1,2,1,3,2,5]
Output: [3,5]

Note

Tcdian commented 3 years ago

Solution

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var singleNumber = function(nums) {
    let bitmask = 0;
    for (let i = 0; i < nums.length; i++) {
        bitmask ^= nums[i];
    }
    const difference = bitmask & (-bitmask);
    let r1 = 0;
    let r2 = 0;
    for (let i = 0; i < nums.length; i++) {
        if (difference & nums[i]) {
            r1 ^= nums[i];
        } else {
            r2 ^= nums[i];
        }
    }
    return [r1, r2];
};
function singleNumber(nums: number[]): number[] {
    let bitmask = 0;
    for (let i = 0; i < nums.length; i++) {
        bitmask ^= nums[i];
    }
    const difference = bitmask & (-bitmask);
    let r1 = 0;
    let r2 = 0;
    for (let i = 0; i < nums.length; i++) {
        if (difference & nums[i]) {
            r1 ^= nums[i];
        } else {
            r2 ^= nums[i];
        }
    }
    return [r1, r2];
};