【牛客题解】 ——数组中只出现一次的数字
程序员文章站
2022-07-15 11:00:29
...
数组中只出现一次的数字
思路一:利用unordered_map,先把数组中的数字和次数放入map中,再次遍历数组,如果次数为1,则记录结果
class Solution {
public:
void FindNumsAppearOnce(vector<int> data,int* num1,int *num2)
{
unordered_map<int,int> m;
for(int i=0;i<data.size();i++)
{
m[data[i]]++;
}
vector<int> v;
for(int i=0;i<data.size();i++)
{
if(m[data[i]]==1)
v.push_back(data[i]);
}
*num1=v[0];
*num2=v[1];
}
};
思路二:利用set,如果set中好不到数字,则进行插入,如果找到数字,则进行删除(针对出现两次的数字),到最后set中就只剩下出现一次的数字。
class Solution {
public:
void FindNumsAppearOnce(vector<int> data,int* num1,int *num2)
{
set<int> s;
set<int> ::iterator it;
for(int i=0;i<data.size();i++)
{
if(s.find(data[i])==s.end())
s.insert(data[i]);
else
{
it=s.find(data[i]);
s.erase(it);
}
}
it=s.begin();
*num1=*it;
*num2=*(++it);
}
};