Total Hamming Distance
题意
给定一个数组,求数组中两两二进制表示中不同位个数的总和。
解法
数组规模有10^4,所以不能用两层循环。数字的范围小于10^9,所以我们统计32位二进制表示中,每个数组中的元素在某一位是0还是1。如果是1的个数有m个,那么是0的个数就为arr.length-m,则在这一位二进制表示不同位的总和就是 m*(arr.length-m)。
代码
|
|
Nothing is too difficult, if you put your heart into it.
给定一个数组,求数组中两两二进制表示中不同位个数的总和。
数组规模有10^4,所以不能用两层循环。数字的范围小于10^9,所以我们统计32位二进制表示中,每个数组中的元素在某一位是0还是1。如果是1的个数有m个,那么是0的个数就为arr.length-m,则在这一位二进制表示不同位的总和就是 m*(arr.length-m)。
|
|