JAVA经典面试题(三)--1~100共一百个自然数,放入一个99个元素的数组a[99],找出没有放入的那个元素

这答题有两个难点,第一个是怎么向有99个元素中插入不重复的1~100的自然数。第二个是程序优化,也就是1~100的自然数之和减去99个数组元素之和就是剩下的那个数。

        int sumA = (1+100)*50;
        int sumArr = 0;
        int[] arr = new int[99];
        for (int i = 0; i < 99; i++) {
            arr[i] = (int) ((Math.random()*100)+1);
            for (int j = 0; j < i; j++) {
                if(arr[j]==arr[i]){
                //如果随机生成的元素在数组中存在,则数组下标减一返回到此级重复判断
                    i--;
                    break;
                }
            }
        }
        for (int i = 0; i < arr.length; i++) {
            sumArr+=arr[i];
            System.out.print(arr[i]+",");
        }
        System.out.println(sumA-sumArr);

可以用 Set 容器实现这种功能 , Set 不会向集合加入重复元素

你可能感兴趣的:(面试题,JAVA近年面试题解析)