算法问题-五行缺数

在给定的数据中,找出缺失的数字

第一种:在给定的有序数组中,找到缺失的数字,只缺一个,
思路,累加数字到给定n,然后减去有序数组累加的和,然后就找到了

 /**
     * 第一种,1-100中缺失一个数字,找出他是谁,数组 无需不重复
     * 方法 1-100相加减去给定数字的结果
     *
     * num是给定数字,n是代表 1-n的结果集
     */
    public static int findLostNum(int[] num,int n){
        //比如给 num=3,res = 5 那么结果是 5-3 = 2,就是缺失的
        int sum = 0;
        for (int i = 1; i <=n ; i++) {
            sum+=i;
        }
        for (int i = 0; i < num.length; i++) {
            sum-=num[i];
        }
        return sum;
    }

测试

    public static void main(String[] args) {
        // 1-3 ,5 = 1+2+3-5
//        System.out.println(findLostNum(3,5));

      
    }

第二种:第二种,99个数字,有偶数个重复的,一个奇数不重复的,找出这个数字
思路 异或

 /**
     * 第二种,99个数字,有偶数个重复的,一个奇数不重复的,找出这个数字
     * 可以考虑xor(异或)
     * * num是给定数字
     */
    public static int findLostNum1(int[] num){
        //比如给 num=3,res = 5 那么结果是 5-3 = 2,就是缺失的
        int sum = 0;
        for (int i = 0; i <num.length ; i++) {
            sum^=num[i];
        }
        return sum;
    }



    /**
     *
     * @param args
     */
    public static void main(String[] args) {
        // 1-3 ,5 = 1+2+3-5
//        System.out.println(findLostNum(3,5));

        // 2 2 3
        int[] num1 = {2,2,3};
        System.out.println(findLostNum1(num1));
    }

还有一种情况:
/**
* 还有一种是有偶数个重复度 还有俩个 不同的 奇数
* 找出这俩个奇数
* 这个就做思考题吧
*/

posted @ 2021-11-30 11:09  小傻孩丶儿  阅读(96)  评论(0编辑  收藏  举报