• 憨批是我


    1-13这13个数放在还有14个元素的数组中只有唯一的一个元素值重复且均只出现一次每个数组元素只能访问一次 设计一个算法 把他找出来不用辅助空间

    public class Test {
    
        /**
         * xor(汇编中表示)  异或0^0=0 1^1=0 2^2=0 一次类推  除0之外相同得0否则为1  因此0^任何数=任何数
         * 
         * 因此 假如数组中为 1223 (一个重复)   我们只需要让1^2^2^3 ^1^2^3 (后面的一二三为下标 这个题很凑巧)
         */
        public static void main(String[] args) {
            
             xorCalc();
             Calc();
             Calc1();
            
        }
        
        
        public static void xorCalc()
        {
            int arr[]= {1,2,3,6,4,5,7,8,9,10,11,13,12,10}; //这里简单的构造数组不弄1-100了 这里10重复
            int xor=0;
            
            for (int i = 1; i < arr.length; i++) {
                xor=xor^i;
                
            }
            
            
            for (int i = 0; i < arr.length; i++) {
                xor=xor^arr[i];
                
            }
            
            System.out.println(xor);
            
        }
        
        public static void Calc()
        {
            //暴力匹配
            Map<Integer, Integer> map =new HashMap<>();
            int arr[]= {1,2,3,6,4,5,7,8,9,10,11,13,12,10}; //这里简单的构造数组不弄1-100了 这里10重复
            
            for (int i = 0; i < arr.length; i++) {
                if (map.containsKey(arr[i])) {
                    int temp=map.get(arr[i]);
                    map.replace(arr[i],++temp );
                    
                }else {
                    map.put(arr[i], 1);
                }
                
            }
            
        for (int j = 1; j <= map.size(); j++) {
            
            if (map.get(j)==2) {
                System.out.println(j);
            }
        }
            
            
        }
        
        
        public static void Calc1()
        {//暴力匹配
            int arr[]= {1,2,3,6,4,5,7,8,9,10,11,13,12,10}; //这里简单的构造数组不弄1-100了 这里10重复
            int arr1[]=new int[15];//跟C++申请数组方式不太一样
            for (int i = 0; i < arr.length; i++) {
                arr1[arr[i]]++;
                
            }
            
            for (int i = 0; i < arr1.length; i++) {
                if (arr1[i]>1) {
                    System.out.println(i);
                }
            }
            
        }
        
    }
  • 相关阅读:
    UVA 10462 Is There A Second Way Left?(次小生成树&Prim&Kruskal)题解
    POJ 1679 The Unique MST (次小生成树)题解
    POJ 2373 Dividing the Path (单调队列优化DP)题解
    BZOJ 2709 迷宫花园
    BZOJ 1270 雷涛的小猫
    BZOJ 2834 回家的路
    BZOJ 2506 calc
    BZOJ 3124 直径
    BZOJ 4416 阶乘字符串
    BZOJ 3930 选数
  • 原文地址:https://www.cnblogs.com/xuexidememeda/p/12718561.html
Copyright © 2020-2023  润新知