给定一个数组,除了一个数出现1次之外,其余数都出现3次。找出出现一次的数。
如:{1, 2, 1, 2, 1, 2, 7}, 找出7.
格式:
第一行输入一个数n,代表数组的长度,接下来一行输入数组A[n],(输入的数组必须满足问题描述的要求),最后输出只出现一次的数。
要求:
你的算法只能是线性时间的复杂度,并且不能使用额外的空间哦~
样例1
输入:
4 0 0 0 5
输出:
5
# include <iostream>
# include <vector>
using namespace std;
int searchOne(vector<int> ivec,int n)
{
for(vector<int>::size_type i=0;i<n;i++)
{
int count=0;
for(vector<int>::size_type j=0;j<n;j++)
if(ivec[i] == ivec[j])
count++;
if(count==1)
{
return ivec[i];
break;
}
}
}
int main()
{
int n,n2,m,num;
vector<int> ivec;
cin >>n;
n2=n;
while(n>0)
{
cin >>m;
ivec.push_back(m);
n--;
}
num = searchOne(ivec,n2);
cout << num <<endl;
return 0;
}
本文介绍了一种算法,可以在线性时间内找到在一个数组中仅出现一次的数,该数组中除一个数外,所有其他数都出现了三次。算法不使用额外的空间。
1839

被折叠的 条评论
为什么被折叠?



