【剑指Offer】数组中重复的数字(哈希)

在一个长度为 n 的数组里的所有数字都在 0 到 n - 1 的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为 7 的数组 {2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字 2。

思路:利用 Map,记录每个值,若已经存在,则跳出。

bool duplicate(int numbers[], int length, int* duplication) {
    map<int, int> _map;
    for (int i = 0; i < length; i++) {
        if(_map[numbers[i]] == 1){
            *duplication = numbers[i];
            return true;
        }
        _map[numbers[i]]++;
    }
    return false;
}

本文链接:https://ariser.cn/index.php/archives/403/
本站文章采用 知识共享署名4.0 国际许可协议进行许可,请在转载时注明出处及本声明!