异或的解法
如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。与0异或,取决于X本身
(a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c;)
var singleNumber = function(nums) {
var num=0;
for(i=0;i<nums.length;i++){
num^=nums[i];
}
return num;
};
var singleNumber = function(nums) {
//第一种解法
//执行用时 :1624 ms, 在所有 javascript 提交中击败了5.07%的用户
//内存消耗 :49.9 MB, 在所有 javascript 提交中击败了5.03%的用户
// var len=nums.length,i=0;
// while(i<len){
// var tar=nums[i];
// var numsN =[];
// if(i==0){
// numsN=nums.slice(i+1);
// } else{
// numsN= numsN.concat(nums.slice(0,i),nums.slice(i+1));
// }
// var flag=numsN.includes(tar);
// if(flag==false){
// return tar;
// }
// i++;
// }
//第二种解法
// 执行用时 :200 ms, 在所有 javascript 提交中击败了21.29%的用户
// 内存消耗 :37.4 MB, 在所有 javascript 提交中击败了21.34%的用户
var numsN =[] ,len=nums.length,i=0;
for( i= 0;i<len;i++){
var tem=numsN.indexOf(nums[i]);
if(tem==-1){
numsN.push(nums[i]);
}else{
numsN.splice(tem,1);
}
}
return numsN[0];
};