//判断一个整数是否是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...java
给定一个非负整数 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...code
给定一个非空整数数组,除了某个元素只出现一次之外,其他每一个元素均出现两次。找出那个只出现了一次的元素。leetcode
1:rem
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:get
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...hash
给定一个整数数组 nums
,其中刚好有两个元素只出现一次,其他全部元素均出现两次。 找出只出现一次的那两个元素。it
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; }