算法问题-五行缺数
在给定的数据中,找出缺失的数字
第一种:在给定的有序数组中,找到缺失的数字,只缺一个,
思路,累加数字到给定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));
    }
还有一种情况:
/**
* 还有一种是有偶数个重复度 还有俩个 不同的 奇数
* 找出这俩个奇数
* 这个就做思考题吧
*/
    不恋尘世浮华,不写红尘纷扰
                    
                
                
            
        
浙公网安备 33010602011771号