之前整理过本题及其扩展,详细说明了思路和做法,链接如下:
只出现一次的数字I,II,III
class Solution {
public int[] singleNumber(int[] nums) {
int eor = 0;
for(int num : nums){
eor ^= num;
}
int rightOne = eor & (~eor + 1);
int onlyOne = 0;
for(int num : nums){
if((num & rightOne) == rightOne){
onlyOne ^= num;
}
}
return new int[]{onlyOne, eor ^ onlyOne};
}
}
如果对您有帮助,请点赞关注支持我,谢谢!❤
如有错误或者不足之处,敬请指正!❤