LeetCode第260题 找出数组中出现次数为奇数的两个数
给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。
public static void method(int[] arr) {
int eor = 0;
for (int i : arr) {
eor ^= i;
}
int rigntOne = eor & (~eor + 1);//使eor中最右面的一位1保持为1,其余为次皆为0,该位为1说明出现奇数次的两个数在该位置不同
int onlyone = 0;
for (int j : arr) {
//根据rigntOne的那一位是否是1将arr数组中的数分为两组,两组中恰好只会出现一个出现奇数次的数
if ((rigntOne & j) == 0) {
onlyone ^= j;
}
}
System.out.println(onlyone + " " + (onlyone ^ eor));
}
评论区