• 憨批是我


    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);
                }
            }
            
        }
        
    }
  • 相关阅读:
    react中的生命周期钩子
    vue小知识
    vue发布中的前后端分离和前后端不分离
    vue中的vuex
    vue项目的发布
    stylus解决移动端1像素
    一行代码实现数组去重(ES6)
    详解js中Number()、parseInt()和parseFloat()的区别_javascript技巧
    关于element-ui 的日期时间选择器的超出时间无法选择的设置
    git使用
  • 原文地址:https://www.cnblogs.com/xuexidememeda/p/12718561.html
Copyright © 2020-2023  润新知