假设现在有一个a[5]={2,4,6,8,10},如何找出来一个数和里边的数都不相同,最好有个方法,因为这样的数组有好多个,可以看成有一个三围数组,每个单元里有五个数,然后要找出来与单个单元里不同的数,想了好久了,看起来好简单,但想了好久了,可能进入思维定势了,求解答

解决方案 »

  1.   

    int m;
    int[] a={2,4,6,8};
    Random r=new Random();
    m=r.nextInt();
    for(int i=0;i<a.length;i++){
    if(m!=a[i]){

    }
    else{
    m=r.nextInt();
    }

    }
    System.out.println(m);
      

  2.   

    int[] a = {2,4,6,8};
    boolean flag = true;do{
       Random r =new Random();
       m = r.nextInt();
          for(int i = 0;i < a.length;i++){
           if(a[i] == m){
           flag = false;
           break;
           }
        if(flag){
           System.out.print(m);
        }   
    }
       
    }while{flag}
      

  3.   

    public static void main(String[] args) {
    int[] a = {2,4,6,8};
    Set<Integer> set = new HashSet<Integer>();
    for(int i : a) {
    set.add(i);
    }
    Random random = new Random();
    Integer i ;
    while(true) {
    i = random.nextInt(10);
    if(!set.contains(i)) {
    break;
    }
    }
    System.out.println(i);
    }如果数据量大的话我觉得用这个比较好些,而且可以使用其他类型的数据
      

  4.   

    先将数组sort一下,找到最大值,再random.nextInt(max);
    另外,如果max的值非常大(远大于数组.size()),还是改成在一个连续数组中将原有数组中的所有数字去掉,然后逐个搜索剩余数字。
      

  5.   

    可以找出里面最小的数min,那么min-1肯定是一个和里面的数不同的数啦!(也可以是max+1)
    这样只需遍历一次int[] a = {2,4,6,8};
    int min=a[0];for(int i = 0;i < a.length;i++){
       if(a[i]<min){
           min=a[i];
       }
    }
    System.out.println(min-1);
      

  6.   

    int m;
    int[] a={2,4,6,8};
    Random r=new Random();
    m=r.nextInt();
    for(int i=0;i<a.length;i++){
    if(m==a[i]){
    m=r.nextInt();
    }
    }
    System.out.println(m);
      

  7.   

    最蠢的就是生成个随机数 然后2个循环 有相等的直接break外层循环继续生成遍历 知道循环正常结束 就输出。
    还有一个和九楼想法一样。