zoukankan      html  css  js  c++  java
  • 异或运算( ^ )

    给定一个包含n个整数的数组,除了一个数出现一次以外,其他数均出现两次,找出这个出现一次的整数

    思路:运用异或运算,暴力,快速……

    public class SingleNumber       {
            public static int singleNumber(int[] A) {
                    int x = 0 ;
                    for(int a:A)
                            x = x ^ a ;
                    return x ;
            }
            public static void main(String[] args)  {
                    int A[] = {1,1,4,4,2,3,3} ;
                    int s = singleNumber(A) ;
                    System.out.printf("%d
    ",s) ;
            }
    }

    异或运算法则:

    1^1 = 0

    1^0 = 1

    0^1 = 1

    0^0 = 0

    另外一种方法:

    public class SingleNumberII    {
        public static int Solve(int A[])    {
            int sum = 0 ;
            for(int i = 0 ; i < 32 ; i++)    {   //  统计每一位“1”的个数
                int count = 0 , d = 1 << i ;
                for(int a:A)
                    count += (a >> i) & 1 ;  // 取出最低位
                if(count % 2 > 0)               //  去除出现两次的整数
                    sum |= d ;
            }    
            return sum ;
        }
        public static void main(String[] args)    {
            int[] A = {1,1,2,2,3,3,5} ;
            int x = Solve(A) ;
            System.out.printf("%d
    ",x) ;
        }
    }    

    给定一个包含n个整数的数组,除了一个数据没有出现三次,其他数据都出现三次,找出这个整数

    public class SingleNumberII    {
        public static int Solve(int A[])    {
            int sum = 0 ;
            for(int i = 0 ; i < 32 ; i++)    {   //  统计每一位“1”的个数
                int count = 0 , d = 1 << i ;
                for(int a:A)
                    count += (a >> i) & 1 ;
                if(count % 3 > 0)               //  去除出现三次的整数
                    sum |= d ;
            }    
            return sum ;
        }
        public static void main(String[] args)    {
            int[] A = {1,1,1,2,2,2,3,3,3,5} ;
            int x = Solve(A) ;
            System.out.printf("%d
    ",x) ;
        }
    }    
  • 相关阅读:
    bzoj4555
    bzoj4516
    树莓派/Debian 挂载硬盘
    树莓派/Debian Apache2 安装腾讯云 SSL 证书
    2019-2020-2《网络对抗技术》 Exp2 后门原理与实践
    kali 开启 SSH 服务
    Docker 入门 7 构建镜像
    Docker 入门 6 获取、加速镜像.md
    Docker 入门 5 数据管理
    Docker 入门 4 容器端口映射 和 Nginx 演示部署
  • 原文地址:https://www.cnblogs.com/scottdinggo/p/4444992.html
Copyright © 2011-2022 走看看