找到数组中只出现一次的元素
程序员文章站
2024-03-16 17:41:22
...
找到数组中只出现一次的元素,其他元素都出现2次
public static int singleNumber(int[] nums) {
int res = nums[0];
for (int i = 1; i < nums.length; i++)
res = res ^ nums[i];
// A ^ A = 0
// A ^ 0 = A
return res;
}
找到数组中只出现一次的元素,其他元素出现3次
public static int singleNumber(int[] nums) {
int len = nums.length, result = 0;
// int整型占32bit
for (int i = 0; i < 32; i++) {
int sum = 0; // sum统计数组元素第i位为1的个数总和
for (int j = 0; j < len; j++) {
sum += (nums[j] >> i) & 1;
}
result |= (sum % 3) << i;
}
return result;
}
上一篇: 数组的三个数最大乘积
下一篇: 图形学常见概念与算法-纹理过滤