202–06-22
1.題目描述
一個整型數組 nums 裏除兩個數字之外,其他數字都出現了兩次。請寫程序找出這兩個只出現一次的
數字。要求時間複雜度是O(n),空間複雜度是O(1)。
2.題解
位運算
3.代碼
class Solution {
public:
vector<int> singleNumbers(vector<int>& nums) {
int len=nums.size();
int ans=0;
for (int i=0;i<len;i++){
ans^=nums[i];
}
int t=ans&(-ans);
int ans1=0,ans2=0;
for (int i=0;i<len;i++){
if (t&nums[i]){
ans1^=nums[i];
}else{
ans2^=nums[i];
}
}
vector<int> res={ans1,ans2};
return res;
}
};