给定一个整型数组,请写一个算法,找到第一个仅出现一次的数组元素,复杂度为O(n)
输入样例:
1,1,2,2,3,3,4,4,5,6,6,8,9,9
输出:
5
可以使用dictionary来做,遍历数组,把元素值作为key,元素出现次数作为value,其中key是一个array
代码如下:
int findNum(vector<int> a) {
map<int,int> m;
vector<int> key;
for(int i = 0; i < a.size(); ++i){
if(m.count(a[i])){
//如果m中存在该key(元素址),则把key相应的value加1。
m[a[i]] += 1;
}else{
//若m中不存在该key,则加进来。然后设置value为1。
key.push_back(a[i]);
m[a[i]] = 1;
}
}
//遍历,找到第一个value为1的key值,函数返回。
for(int i = 0; i < key.size(); ++i){
if(m[key[i]] == 1){
return key[i];
}
}
return 0;
}