本文共 422 字,大约阅读时间需要 1 分钟。
这道题我最开始直接算每两个数字的hamming距离,超时了。
然后看了discuss,发现可以用每一位的1的个数乘以0的个数累加,牛逼啊!
最高答案用了32次方,其实31次方就够了,因为给了最大值是10^9。
int totalHammingDistance(vector & nums) { int num = nums.size(); int result = 0; for (int i = 0;i<31;i++) { int oneCount = 0; for (int j = 0;j>i)&1) oneCount++; } result += oneCount*(num - oneCount); } return result; }
转载地址:http://ipqyb.baihongyu.com/