private int[] singleNumber(int[] nums) { int[] res = new int[2];
int num = 0; for (int i : nums) { num ^= i; } // 如果只有一个不同 // res[0] = num;
//如果两个不同 int index = bit1(num); for (int i : nums) { if (isBit1(index, i)) { res[0] ^= i; } else { res[1] ^= i; } }
return res; }
private boolean isBit1(int index, int i) { i >>>= index; return (i & 1) == 1; } private int bit1(int num) { int index = 0; while ((num & 1) == 0 && index < 32) { num >>>= 1; index++; } return index; }