题目
在一个数组 nums
中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。
示例 1:
输入:nums = [3,4,3,3]
输出:4
1
2
2
示例 2:
输入:nums = [9,1,7,9,7,9,7]
输出:1
1
2
2
限制:
1 <= nums.length <= 10000
1 <= nums[i] < 2^31
题解
java
public int singleNumber(int[] nums) {
// 记录每一个位元出现的次数
int[] bit = new int[32];
for (int num : nums) {
int i = 0;
// 无符号右移 直至为0 统计每个位元出现的次数
while (num != 0) {
bit[i++] += num & 1;
num >>>= 1;
}
}
int result = 0;
// 遍历位元数组 若不能被3整除 表示这个位元为1 否则为0
for (int i = 0; i < bit.length; i++) {
if (bit[i] % 3 != 0) {
result |= 1 << i;
}
}
return result;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23