我想返回数组中的第一个(第一次见面,从左到右)非重复元素。
我提供了一种算法,该算法很容易返回在数组中不重复的最小整数,仅使用数组作为额外空间,长度为数组中的最大整数值:
// smallest non repeating integer
int firstNonRepeatingInteger(int* input, int n)
{
max = std::numeric_limits<int>::min() ;
for(int i = 0 ; i < n ; i++)
{
if(input[i] > max)
max = input[i];
}
int* count = new int[max];
for(int i = 0 ; i < n ; i++)
count[input[i]] += 1 ;
int j = 0;
while(count[i] != 1)
j++ ;
if(j < n)
return input[count[j]] ;
else
return -1 ;
}
但是,我找不到找到第一次遇到的算法,除非有另一个 n 数组存储遇到整数的时间。
任何想法 ?第一个算法的任何其他实现?
谢谢