AcWing 74. 数组中唯一只出现一次的数字-java
原题链接
困难
作者:
ajiangplus
,
2019-08-17 15:55:30
,
所有人可见
,
阅读 799
java 代码
class Solution {
public int findNumberAppearingOnce(int[] nums) {
int[] bitSum = new int[32]; //int在二进制下是32位
for (int num : nums) { //外层循环遍历数组的每个数
int bitMask = 1; //数和bitMask & ,则对应位不为1就为0
for (int j = 31; j >= 0; j--) { //判断每个数的32个位置上的数是1还是2
int bit = num & bitMask;
if (bit != 0) bitSum[j] += 1; //若为1则对应加上1
bitMask = bitMask << 1;
}
}
StringBuilder s1 = new StringBuilder();
for (int i = 0; i < 32; i++)
s1.append(bitSum[i] % 3);
String s2 = s1.toString();
return Integer.parseInt(s2, 2); //二进制字符串转化为十进制整数
}
}