【牛客网】剑指offer编程题:数组中的重复数字(C++)
这道题目主要考察数组相关的内容,思路也比较简单。题目中规定所有数字都在0~n-1的范围内,那么这个数组里的数值不会超出长度为n的数组的下标范围0~n-1,只需要找到任意一个重复的数值即可,我们可以对这个数组从头开始遍历:
1、如果 i 与numbers[i] 相等,遍历下一个元素;
2、如果 i 与numbers[i] 不相等,那么:
如果 numbers[i] == numbers[numbers[i]],就是下标为 i 的元素数值与下标为 numbers[i]的元素数值相同,找到重复数字,返回true;如果 numbers[i] != numbers[numbers[i]],就将numbers[i] 与 numbers[numbers[i]]中的数值互换。继续进行步骤1、2,直到数组的最后一个元素,仍然没有找到数字的话,返回false;