zoukankan      html  css  js  c++  java
  • 477. Total Hamming Distance

    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 to 10^9
    2. Length of the array will not exceed 10^4.

    For each bit position 1-32 in a 32-bit integer, we count the number of integers in the array which have that bit set. 

    Then, if there are n integers in the array and k of them have a particular bit set and (n-k) do not, then that bit contributes k*(n-k) hamming distance to the total.

    time = O(n), space = O(1)

    class Solution {
        public int totalHammingDistance(int[] nums) {
            int res = 0, n = nums.length;
            for(int i = 0; i < 32; i++) {
                int oneCount = 0;
                for(int j = 0; j < nums.length; j++) {
                    oneCount += (nums[j] >> i) & 1;
                }
                int zeroCount = n - oneCount;
                res += zeroCount * oneCount;
            }
            return res;
        }
    }
  • 相关阅读:
    网络流24题-分配问题
    网络流24题-圆桌问题
    git ssh
    SQL Server 添加说明 语句
    问题思路
    数据库事务和锁
    Castle Windsor
    Flask学习笔记11之特殊的装饰器
    python中的"环绕通知"
    Flask学习笔记10之flash
  • 原文地址:https://www.cnblogs.com/fatttcat/p/11403392.html
Copyright © 2011-2022 走看看