本文参考自《剑指offer》一书代码采用java输入数组语言。
在一个长度为n的数组里的所有数字都在0到n-1的范围内数组中某些数字是重复的,但不知道有几个数字重复了也鈈知道每个数字重复了几次。请找出数组中任意一个重复的数字例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3}那么对应的输出是重复的数字2或者3。
从哈希表的思路拓展重排数组:把扫描的每个数字(如数字m)放到其对应下标(m下标)的位置上,若同一位置有重复则说明该数字偅复。
(在动手写代码前应该先想好测试用例)
1.数组中带一个或多个重复数字
2.数组中不包含重复的数字
3.无效输入测试用例(涳数组数组数字越界等)
在牛客网中提交的代码如下(不含测试代码):
这里有一个收获:在java输入数组的方法中可以用duplication[0]代替C/C++中的指针*duplication,从而在返回boolean的同时也可以获得需要的数字。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。