Given an array of integers, every element appears three times except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
难度系数:
中等
实现
这题要线性时间,不使用额外存储,我觉得挺难的,我没做出来,看来网上的答案。方法很好,理解后也不是很难,只是之前没 做过类似的,估计不容易想出来。
int singleNumber(int A[], int n) {
int one = 0, two = 0, three = 0;
for (int i = 0; i < n; ++i) {
three = two & A[i];
two |= one & A[i];
one |= A[i];
one ^= three;
two ^= three;
}
return one;
}
时间: 2024-12-15 01:49:48