//判断一个整数是不是2的N次方
private boolean is2N(int num) {
return (num & (num - 1)) == 0;
}
//判断一个正整数是奇数还是偶数,即可不是被2整除
private boolean isEvenNumber(int num) {
return (num & 1) == 0;
}
338:https://leetcode-cn.com/probl...
给定一个非负整数 num。计算其二进制数中的 1 的数目。
private int getBit1Count(int number) {
int mask = 1;
int count = 0;
for (int i = 0; i < 32; i++) {
if ((number & mask) != 0) {
count += 1;
}
mask <<= 1;
}
return count;
}
136:https://leetcode-cn.com/probl...
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
1:
public int selectSinlgeNumber(int[] array) {
// a^a = 0, 0^x = x
// a^b^a = a^a^b =b
int a = 0;
for (int i = 0; i < array.length; i++) {
a ^= array[i];
Log.i(TAG, "selectSinlgeNumber: " + a);
}
return a;
}
2:
public int selectSinlgeNumber1(int[] array) {
HashSet<Integer> hashSet = new HashSet<>();
for (int i = 0; i < array.length; i++) {
if (!hashSet.add(array[i])) {
hashSet.remove(array[i]);
}
}
Integer[] array1 = (Integer[]) hashSet.toArray();
return array1[0];
}
260:https://leetcode-cn.com/probl...
给定一个整数数组 nums
,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。
public int[] selectTheSinlgeNumbers(int[] array) {
int a = 0;
for (int i = 0; i < array.length; i++) {
a ^= array[i];
}
int mask = a & -a;
int[] b = new int[2];
for (int j = 0; j < array.length; j++) {
if ((mask & array[j]) == 0) {
b[0] ^= array[j];
} else {
b[1] ^= array[j];
}
}
return b;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。