一、题目描述
二、解题思路
- 利用语言的一些函数来实现,比较简单
- 位运算:太难了,想了半天才想明白= =截取一下大佬的方法~
三、代码实现
方法1:
var singleNumbers = function(nums) {
let res = []
for(let num of nums){
if(res.indexOf(num)==-1) res.push(num)
else res.splice(res.indexOf(num),1)
}
return res
};
方法2:
const singleNumbers = (nums) => {
// 计算异或值
let num1 = 0
for (let i = 0; i < nums.length; i++) {
num1 = num1 ^ nums[i];
}
// 通过与(&)选定1的位置
let count = 1
while((num1&count) === 0) {
count = count * 2
}
// 分组
let num2 = 0
let num3 = 0
for (let i = 0; i < nums.length; i++) {
const num = nums[i]
if ((num & count) === 0) {
num2 = num2^num
} else {
num3 = num3^num
}
}
return [num2, num3]
}