Total Hamming Distance

题目来源
求一堆数字之间的汉明码距离之和。
我一开始一个一个算,代码如下,然后超时了。

class Solution {
public:
    int totalHammingDistance(vector& nums) {
        int n = nums.size(), cnt = 0;
        for (int i=0; i

后来一位一位的算,然后AC了,代码如下:

class Solution {
public:
    int totalHammingDistance(vector& nums) {
        int n = nums.size(), cnt = 0;
        for (int i=0; i<32; i++) {
            int numZeroes = 0, numOnes = 0;
            for (int j=0; j

看看大神们简洁的做法,直接移位加与操作:

class Solution {
public:
    int totalHammingDistance(vector& nums) {
        int n = nums.size(), cnt = 0;
        for (int i=0; i<32; i++) {
            int numOnes = 0;
            for (int j=0; j> i) & 1;
            cnt += numOnes * (n - numOnes);
        }
        return cnt;
    }
};

你可能感兴趣的:(Total Hamming Distance)