题目描述
blablabla
样例
blablabla
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
class Solution {
public:
vector<int> findNumsAppearOnce(vector<int>& nums) {
/*异或运算规律:1、0^x = x
2、a^b^b = a
3、相异为1,相同为0
*/
int sum = 0 ;
for(auto x : nums) sum ^= x;
int k = 0;
//找到数位式1的第k位数
while( !(sum >> k & 1)) k++;
/*
1.将数分为两个集合,第k位为1的集合和第k位不是1的集合
2.其中x y分别在这两个集合,且相同的元素是在同一个集合里面
3.遍历nums所有数字找到第k位为1的数进行异或
4.这就转化成了求重复数字中的单个数值的问题
5.最后 first ^ sum = first ^ first ^ second = second;
*/
int first = 0 ;
for(auto x : nums){
if(x>>k&1)
first ^= x;
}
return vector<int>{first , first^sum};
}
};