数组中只出现一次的数字
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
#include<stdlib.h>
#include<iostream>
#include<stdio.h>
#include<vector>
#include<time.h>
#include<set>
#include<map>
#include<assert.h>
#include<string>
#include<stack>
using
namespace
std;
void
find_data(
int
*data,
int
n)
{
int
axor=0,data1=0,data2=0;
for
(
int
i=0;i<n;i++)
axor^=data[i];
axor=axor-(axor&(axor-1));
for
(
int
i=0;i<n;i++)
{
if
(data[i]&axor)
data1^=data[i];
else
data2^=data[i];
}
int
a,b;
a=min(data1,data2);
b=max(data1,data2);
printf
(
"%d %d\n"
,a,b);
}
int
main()
{
int
tnums;
int
value[1000005];
while
(
scanf
(
"%d"
,&tnums)==1)
{
for
(
int
i=0;i<tnums;i++)
scanf
(
"%d"
,&value[i]);
find_data(value,tnums);
}
return
0;
}
/**************************************************************
Problem: 1351
User: billforum
Language: C++
Result: Accepted
Time:950 ms
Memory:5344 kb
****************************************************************/