zoukankan      html  css  js  c++  java
  • [LeetCode] 477. Total Hamming Distance(位操作)

    传送门

    Description

    The Hamming distance between two integers is the number of positions at which the corresponding bits are different.

    Now your job is to find the total Hamming distance between all pairs of the given numbers.

    Example:

    Input: 4, 14, 2

    Output: 6

    Explanation: In binary representation, the 4 is 0100, 14 is 1110, and 2 is 0010 (just
    showing the four bits relevant in this case). So the answer will be:
    HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6.

    Note:

    1. Elements of the given array are in the range of 0 to 10^9
    2. Length of the array will not exceed 10^4.

    思路

    题意:给定一个数组,其中两两配对,求出所有配对数的汉明距离。

    题解:我们知道,汉明距离是两个数其二进制位上不同的位数,因此,对于32位数,遍历二进制位,统计每个数在第一个bit位有多少个数是1,有多少个数是0,然后统计第二个bit位,以此类推。

    class Solution {
    public:
        //59ms
        int totalHammingDistance(vector<int>& nums) {
            int res = 0,len = nums.size();
            for (int i = 0;i < 32;i++){
                int cnt = 0;
                for (int j = 0;j < len;j++){
                    cnt += (nums[j] >> j) & 1;
                }
                res += (len - cnt) * cnt;
            }
            return res;
        }
    };
    

      

  • 相关阅读:
    IS-IS协议的内容
    OSPF协议---进阶篇
    OSPF协议-summary-LSA(LSA-3)
    OSPF协议-外部路由(LSA-4和LSA-5)
    OSPF的特殊区域和其他特性
    BGP的反射器和联盟
    neo4j 初级使用笔记
    Flink窗口介绍及应用
    HDFS之append数据到已存在文件中
    Random Projection在k-means的应用
  • 原文地址:https://www.cnblogs.com/ZhaoxiCheung/p/7400361.html
Copyright © 2011-2022 走看看