题目一:
Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
class Solution {
public:
int singleNumber(int A[], int n) {
set<int>m_set;
for(int i=0;i<n;i++)
{
set<int>::iterator pos;
pos = m_set.find(A[i]);
if(pos == m_set.end())
{
m_set.insert(A[i]);
}
else
{
m_set.erase(pos);
}
}
return *(m_set.begin());
}
};
题目二:
Given an array of integers, every element appears three times except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
class Solution {
public:
int singleNumber(int A[], int n) {
map<int,int>m_map;
map<int,int>::iterator pos;
for(int i =0;i<n;i++)
{
pos = m_map.find(A[i]);
if(pos!=m_map.end())
{
m_map[A[i]]=pos->second+1;
}
else
{
m_map[A[i]]=1;
}
}
pos = m_map.begin();
while(pos->second != 1&&pos!=m_map.end())
{
pos++;
}
return pos->first;
}
};