我正在用C编写一个函数来检查一个数组是否有任何重复值,如果有的话,用任何一个不存在的值替换它。该数组由从1到Nmax的数字组成:
unsigned char * NotRepeated (unsigned char *arr){
unsigned char i, j, count, k, notrepeated[Nmax];
k = 0;
for (i = 0; i < Nmax ; i++){
count = 0;
for (j = 0; j < Nmax; j++){
if (arr[j] != i + 1){
count++;
}
if (count == Nmax){
notrepeated[k] = i + 1;
k++;
}
}
}
k = 0;
for (i = 0; i < Nmax - 1; i++){
for (j = i + 1; j < Nmax; j++){
if (arr[i] == arr[j]){
arr[j] = notrepeated[k];
k++;
}
}
}
return arr
}
如果我打印数组notrepeated[k]
,当原始数组arr[j]
很少有超过2个重复数字时,几乎所有数组都被填充。
我做错了什么?
谢谢!