第一个没有重复的数组元素
很直接使用两重循环,内部循环检查是否存在多次。
for (int i = 0; i < arrays.size(); ++i)
{
int j = 0;
for (; j < arrays.size(); ++j)
{
if (i != j && arrays[i] == arrays[j])
{
break;
}
}
if (j == arrays.size()) //找到最后一个也没找到
{
return arrays[i];
}
}
简单粗暴,但是我们有一个折中的办法保证时间复杂度为O(n),但是需要辅助的空间复杂度O(n)。
std::unordered_map<int, int> tempmap;
for (auto value : arrays)
{
tempmap[value]++;
}
for (auto value : arrays)
{
if (tempmap[value] == 1)
{
return value;
}
}