leetcode 477 Total Hamming Distance C++

来源:互联网 发布:java枚举类型enum用法 编辑:程序博客网 时间:2024/06/06 18:09

这道题我最开始直接算每两个数字的hamming距离,超时了。

然后看了discuss,发现可以用每一位的1的个数乘以0的个数累加,牛逼啊!

最高答案用了32次方,其实31次方就够了,因为给了最大值是10^9。

    int totalHammingDistance(vector<int>& nums) {        int num = nums.size();        int result = 0;        for (int i = 0;i<31;i++) {            int oneCount = 0;            for (int j = 0;j<num;j++) {                if ((nums[j]>>i)&1) oneCount++;            }            result += oneCount*(num - oneCount);        }        return result;    }


0 0