A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© code_linux 中级黑马   /  2015-8-20 21:10  /  779 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

0-99共100个整数,放到一个数组中,位置是随机的将其中一个数37,挑出来,
        换成不是这个数字的另一个数45,(意思就是说 现在0-99这100个数中 37是重复的,而45呢有两个)
        这100个数里面有一个数字是重复的,还有一个数字是没有的,将这个重复的数字找出来,用最快的方式

5 个回复

倒序浏览
你的意思是长100的整型数组里面,一开始都不是重复的,把37换成45,最终数组没有37,而45是重复的吗?
回复 使用道具 举报
shdosh 发表于 2015-8-20 21:14
你的意思是长100的整型数组里面,一开始都不是重复的,把37换成45,最终数组没有37,而45是重复的吗? ...

也可以这么理解,,也许它这个题本身就说的不是很明白。。这个数组中的元素被打乱了,因为必须是随机的
回复 使用道具 举报
  1. import java.util.*;
  2. class NumbSet
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 HashSet<Integer> arrSet = new HashSet<Integer>();

  7.                 for(int i =0 ;i<100;i++){
  8.                         arrSet.add(new Integer(i));
  9.                 }

  10.                 Iterator<Integer> it = arrSet.iterator();
  11.                
  12.                 int[] arr = new int[100];
  13.                 int i=0;
  14.                 while(it.hasNext()){
  15.                         Integer intnum = it.next();

  16.                         arr[i] = intnum.intValue();
  17.                         i++;
  18.                 }
  19.                 for(i=0;i<100;i++){
  20.                         System.out.print(arr[i]+" ");
  21.                 }
  22.                 System.out.println();
  23.                 for(i=0;i<100;i++){
  24.                         if(arr[i]==37)
  25.                                 arr[i]=45;
  26.                 }
  27.                 for(i=0;i<100;i++){
  28.                         System.out.print(arr[i]+" ");
  29.                 }
  30.         }
  31. }
复制代码

加入就是那个意思的话,我这么弄下应该可以。存入Set的元素是无顺序的,取出后生成数组也是无需的。不知道行不行。
回复 使用道具 举报
shdosh 发表于 2015-8-20 21:40
加入就是那个意思的话,我这么弄下应该可以。存入Set的元素是无顺序的,取出后生成数组也是无需的。不知道 ...

感觉你这只是构造了一个数组啊,并没有找出是哪个数字是重复的啊。
回复 使用道具 举报
一下也想不出什么好的算法,硬要面试碰到了就暴力破解法,一个个试咯
两层循环,第一层循环取数组里的从第一个元素开始的元素,第二层循环把它依次和后面的比,相等就return咯。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马