Java查找数组中重复的数字
方法一:使用哈希表,时间复杂度O(n),空间复杂度O(n)
方法二:在原数组进行操作,不使用额外空间。时间复杂度O(n)
原题就不说了,大家应该都知道。关键信息是数组大小为n,数组元素范围为0到n-1。
这里把方法一和方法二写在一个类里面实现了。
/*
* 查找数组中重复的数字
* 方法一:时间复杂度O(n),不使用额外空间
* 思路:1.判断数组是否为空,判断数组中的数是否在0到n之间
* 2.比较索引i与test[i]的值是否相同
* 若相同,则扫描下一个数字
* 若不同,进行第3步
* 3.此时i与test[i]不同,因此判断test[test[i]]的值与test[i]是否相同
* 若相同,则此数为重复数,存在列表中,跳出本次循环,判断下一个数
* 若不同,则交换这两个数,即将test[i]这个值放到索引也是test[i]的这个位置上。
* 方法二:使用一个哈希表存储,时间复杂度O(n),空间复杂度O(n)
* 思路&#x