算法1
$O(n)$
不一样那么他们最后的值一定不为0,
那么设x位不一样,那么分成2批;
一批x位=0,
另外一批x位=1.
C++ 代码
class Solution {
public:
vector<int> findNumsAppearOnce(vector<int>& nums) {
int ans = 0;
for (int x: nums) {
ans ^= x;
}
int i = 0;
while ((ans >> i & 1) == 0) {
i ++;
}
int a = 0;
int b = 0;
for (int x: nums) {
if (x >> i & 1) {
a ^= x;
}
else {
b ^= x;
}
}
return vector<int> {a, b};
}
};
我想问一下,如果数组长度最大是1e6,每个数值范围是0~1e15, 而内存只给了512K,如何解决