LeetCode 477. Total Hamming Distance-python

来源:互联网 发布:电脑图片ps软件 编辑:程序博客网 时间:2024/05/16 18:12

题目大意:

两个整数的汉明距离是指其二进制不相等的位的个数。

计算给定的整数数组两两之间的汉明距离之和。

注意:

  1. 元素大小在[0, 10^9]之间。
  2. 数组长度不超过10^4。

解题思路:

按位统计各整数的二进制0与1的个数之和,分别记为zero[i], 和one[i]

ans = ∑(zero[i] * one[i]),  i∈[0, 31]

Python代码:

class Solution(object):    def totalHammingDistance(self, nums):        """        :type nums: List[int]        :rtype: int        """        ans = 0        for x in range(32):            mask = 1 << x            zero = one = 0            for num in nums:                if num & mask:                    one += 1                else:                    zero += 1            ans += zero * one        return ans
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

 

0 0
原创粉丝点击