数组中重复的数字(没理解)

来源:互联网 发布:国家电网试题软件 编辑:程序博客网 时间:2024/06/01 07:47

题目:在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的。请找出数组中任意一个重复的数字。

方法1:排序。

方法2:哈希表。

方法3:时间复杂度O(n),空间复杂度O(1)。

bool duplicate(int numbers[], int length, int* duplication){    if (numbers == NULL || length <= 0){        return false;    }    for (int i = 0; i < length; ++i){        if (numbers[i] < 0 || numbers[i] > length - 1){            return false;        }    }    for (int i = 0; i < length; ++i){        while (numbers[i] != i){            if (numbers[i] == numbers[numbers[i]]){                *duplication = numbers[i];                return true;            }            //swap numbers[i] and numbers[numbers[i]]            int temp = numbers[i];            numbers[i] = numbers[temp];            numbers[temp] = temp;        }    }    return false;}
0 0
原创粉丝点击