用C替换数组中的重复值

时间:2017-11-08 18:38:39

标签: c arrays

我正在用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个重复数字时,几乎所有数组都被填充。

我做错了什么?

谢谢!

0 个答案:

没有答案