查找重复数字2

来源:互联网 发布:telnet 80端口不通 编辑:程序博客网 时间:2024/06/07 00:13
题设:现有0到99,共计100个整数,各不相同,将所有数放入一个数组,随机排布。数组长度100,将其中任意一个数替换成0到99另一个数(唯一重复的数字)。

问题:将这个重复的数字找出来。

【初始化条件】

int[] arr = new int[100];for(int i =0;i<arr.length;i++){arr[i] = i;}//打乱数组的排列顺序for(int x = 1;x<=10000;x++){//随机排列int num1 = (int)(Math.random()*100);int num2 = (int)(Math.random()*100);//arr[num1]arr[num2] 两个数据互换位置int temp = arr[num1];arr[num1] = arr[num2];arr[num2] = temp;}//将其中一个替换成另一个int n1 = (int)(Math.random()*100);int n2 = (int)(Math.random()*100);while(n1 == n2){n1 = (int)(Math.random()*100);}//将随机的n2位置的值换成n1位置的值arr[n1] = arr[n2];for(int i = 0;i<arr.length;i++){System.out.print(arr[i]+"\t");}System.out.println("--------------");

【方法】

//算法://1.创建一个辅助的数组空间,里面的数据元素全是0//*****在解决方案中使用了全新的数组,用于赋值解决问题//*****这个数组是需要消耗内存空间的,但是由于它的出现//*****加速了重复数据的查找速度,因此速度提高了,但是//*****内存被浪费了一些int[] newArr = new int[100];//2.循环原始数组,使用里面的数据做为新数组的下标,进行自加for(int i = 0;i<arr.length;i++){newArr[arr[i]]++;if(newArr[arr[i]] == 2){//当前下标对应的数据就是你要找的数据System.out.println(arr[i]);break;}}











0 0
原创粉丝点击