int singleNumber(List<int> nums) {
//两个相同的数异或就变成0
//任何数和0 异或 值不变
int result = 0;
for (var element in nums) {
result = result ^ element;
}
return result;
}
//1.将数组中每个数,对应的位数进行叠加。如果出现一次的那个数,那个位是0 则为 3n,如果 是1则是3n+1
//2.然后将每一位叠加和对3求余数(3n mod 3 或者 (3n+1)mod3),余数不是1就是0
//3.将余数归位到原来的数中,就是结果
int singleNumber(List<int> nums) {
int result = 0;
for (var i = 0; i < 64; i++) {
int sum = 0;
for (var element in nums) {
sum += ((element >> i) & 1);
}
result = result | ((sum % 3) << i);
}
return result;
}