题目
在一个长度为n的数组里的所有数字都在 0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如:如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出的是重复的数字2或者3。
思路
由于所有的数字都在 0~n-1的范围内,而数组的长度又是n。因此可以借助数组下标。
基本思路:开一个boolean型的长度为n的数组,下标为数组的元素,遍历传入的int型数组,boolean型数组的下标即为int型数组的元素,如果int型数组的元素出现过,即将boolean数组对象的该下标元素改为true。
所以只用判断该元素所在的boolean型数是否为true就可判断该元素是否出现过了。
代码
public class practice3 {
public static void isExist(int[] arr){
boolean[] bool = new boolean[arr.length];
for (int i = 0; i <= arr.length-1; i++){
if (bool[arr[i]]){
System.out.print(arr[i]+" ");
}else {
bool[arr[i]] = true;
}
}
}
public static void main(String[] args) {
int[] a = {2,3,1,0,2,5,3};
practice3.isExist(a);
}
}