1~100共一百个自然数,放入一个只有99个元素的数组中,要求写出一个尽量简单的方案,找出没有被放入数组的这个数;

解决方案 »

  1.   

    楼上两位犀利,这应该是最简单了的
    package util;public class Test { /**
     * @param args
     */
    //就是比方我数组就简单点  就直接定义了
    public static void main(String[] args) {
    // TODO Auto-generated method stub
            int  s []={1,2,3,5,6,7,8,9,10};
            int  w []={1,2,3,4,5,6,7,8,9,10};      
            int res=new Test().getFindNumber(s, w);
            System.out.println(res+"不在数组中");
    }
        public int  getFindNumber(int a [],int b [])
        {
          int res=0;
          int res1=0;
          int res2=0;
          for (int i=0;i<9;i++)
             {
              res1=a[i]+res1;
             }
          for(int j=0;j<10;j++)
           {
           res2=b[j]+res2;
           }
          res=res2-res1;
         return res;
        }
    }
      

  2.   


    import java.util.ArrayList;
    import java.util.List;public class Test3 { /**
      * @param args
      */
     public static void main(String[] args) {
      
      int [] src = {1, 2, 3, 4, 5, 6, 7, 9, 10} ;
      int [] tArr= new int[src.length +1] ;
      
      for(int i = 0; i <src.length; i++){
       tArr[src[i]-1] = 1 ;
      }
      int j = 0 ;
      for (; j < tArr.length; j++){
       if (tArr[j] == 0){
      
       break ;
       }
      }
      System.out.println("----" + (j+1) ) ;
     
      
     }}
      

  3.   

    代码如下:生成不重复的随机数组的类
    /**
     * 生成随机数但不能重复
     * 
     */public class Random { public static void main(String[] args) { int start=1;
    int stop=100;
    int number = stop-start+1;

    int a[] = rand(start, stop);
    for (int i = 0; i < number; i++) {
    System.out.print(a[i] + " ");
    if (i % 20 == 0 && i != 0) {
    System.out.println();
    }
    } }

    /**
     * 
     * @param start 开始的数
     * @param stop  最后一个数
     * @return 返回一个数组
     */

    public static int[] rand(int start, int stop) { //总共要生成的多少个数
    int number = stop-start+1;

    int Random[] = new int[number];
    for (int i = 0; i < number; i++) {
    while (true) {
    //int ran = (int) (10 * Math.random() + 1);
    int ran =(int)(new java.util.Random().nextInt(number))+start;
    for (int j = 0; j < i; j++) {
    if (Random[j] == ran) {
    ran = -1;
    break;
    }
    }
    if (ran != -1) {
    Random[i] = ran;
    break;
    }
    }
    }
    return Random;
    }}
    具体实现和测试类public class Test_4 { public static void main(String[] args) { test(); } static void test() { // 把随机生成的1~100的自然数放到a中去
    int a[] = Random.rand(1, 100); int b[] = new int[99]; for (int i = 0; i < b.length; i++) {
    b[i] = a[i];
    }
    System.out.println("排序前:  ");
    for (int i = 0; i < b.length; i++) {
    System.out.print(b[i] + " ");
    if ((i + 1) % 20 == 0 && i != 0) {
    System.out.println();
    }
    } // 对该数据进行排序
    for (int i = 1; i < b.length; i++) {
    int insertVal = b[i]; // 要插入的数
    int index = i - 1; // 要比较的前一个数的下标
    while (index >= 0 && insertVal < b[index]) {
    b[index + 1] = b[index];
    index--; // 退出循环的条件
    }
    b[index + 1] = insertVal;
    } System.out.println("\n排序后:  ");
    for (int i = 0; i < b.length; i++) {
    System.out.print(b[i] + " ");
    if ((i + 1) % 20 == 0 && i != 0) {
    System.out.println();
    }
    }

    int num=0;
    for (int i = 0; i < b.length; i++) {
            if(b[i]!=(i+1)){
             num=i+1;
             break;
            }
    }        System.out.println("\n这个没插入的数是:    "+num); }}