1、前言
题目描述
2、思路
这道题使用异或的思路,任何数与0异或是这个数本身,异或还满足交换律。但是这里有两个不同的数,那么就将这个数组拆成两个子数组分别异或即可。
3、代码
class Solution {
public int[] singleNumbers(int[] nums) {
int x = 0, y = 0, n = 0, m = 1;
for(int num : nums){
n ^= num;
}
while((n & m) == 0){
m <<= 1;
}
for(int num : nums){
if((num & m) != 0){
x ^= num;
}else {
y ^= num;
}
}
return new int[]{x, y};
}
}










网友评论