zoukankan      html  css  js  c++  java
  • LeetCode 461 汉明距离

    LeetCode 461 汉明距离

    问题描述:
    两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
    给出两个整数 x 和 y,计算它们之间的汉明距离。

    统计两个数二进制位不同的个数
    方法一: 对最低位不断取模

    执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
    内存消耗:36.6 MB, 在所有 Java 提交中击败了18.01%的用户

    class Solution {
        public int hammingDistance(int x, int y) {
            int z = x^y;    //标记所有不同bit
            /*逐位统计1的数量*/
            int ans = 0;
    
            while(z!=0) {
                //取z的最低位
                if((z&1)==1) {
                    ans++;
                }
                z = z>>1;
            }
    
            return ans;
        }
    }
    

    方法二: 不断去除最低位的1

    执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
    内存消耗:36.5 MB, 在所有 Java 提交中击败了40.32%的用户

    class Solution {
        public int hammingDistance(int x, int y) {
            int z = x^y;    //标记所有不同bit
            /*逐位统计1的数量*/
            int ans = 0;
    
            while(z!=0) {
                ans++;
                z = z&(z-1);    //去除z最低位的1
            }
    
            return ans;
        }
    }
    
  • 相关阅读:
    解决Tomcat无法shutdown进程
    ConcurrentHashMap Put()操作示例代码
    Spring Data JPA
    JAVA CAS原理
    多线程
    多线程
    java 虚拟机--新生代与老年代GC
    TCP协议中的三次握手和四次挥手
    java中volatile关键字
    Java多线程
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13584731.html
Copyright © 2011-2022 走看看