您的位置:首页 > 其它

找出字符串中只出现一次的两个数

2019-03-30 23:17 58 查看

只出现一次的数字3(力扣)

给定一个整数数组 

nums
,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。

输入:

[1,2,1,3,2,5]
输出:
[3,5]

#include<iostream>
#include<vector>
using namespace std;
vector<int> singleNumber(vector<int>& nums) {
int val=0;
for(auto& e : nums)
{
val^=e;
}
int i=0;
for(i=0;i<32;i++)
{
if((val>>i)&1==1)       //找到1的位置
{
break;
}
}
int m=0,n=0;
vector<int> ret;
for(int j=0;j<nums.size();j++)
{
if((nums[j]>>i&1)==1)
{
m^=nums[j];
}
else
{
n^=nums[j];
}
}
ret.push_back(m);
ret.push_back(n);
return ret;
}

int main()
{
vector<int> v;
vector<int> vv;
v.push_back(1);
v.push_back(1);
v.push_back(2);
v.push_back(2);
v.push_back(5);
v.push_back(6);
vv=singleNumber(v);
for(auto& s : vv)
{
cout<<s<<" ";
}
cout<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐