zoukankan      html  css  js  c++  java
  • [Swift]LeetCode477. 汉明距离总和 | Total Hamming Distance

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/10348281.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    The Hamming distance between two integers is the number of positions at which the corresponding bits are different.

    Now your job is to find the total Hamming distance between all pairs of the given numbers.

    Example:

    Input: 4, 14, 2
    
    Output: 6
    
    Explanation: In binary representation, the 4 is 0100, 14 is 1110, and 2 is 0010 (just
    showing the four bits relevant in this case). So the answer will be:
    HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6.
    

    Note:

    1. Elements of the given array are in the range of to 10^9
    2. Length of the array will not exceed 10^4.

    两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。

    计算一个数组中,任意两个数之间汉明距离的总和。

    示例:

    输入: 4, 14, 2
    
    输出: 6
    
    解释: 在二进制表示中,4表示为0100,14表示为1110,2表示为0010。(这样表示是为了体现后四位之间关系)
    所以答案为:
    HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6.
    

    注意:

    1. 数组中元素的范围为从 0到 10^9
    2. 数组的长度不超过 10^4

    Runtime: 668 ms
    Memory Usage: 8.1 MB
     1 class Solution {
     2     func totalHammingDistance(_ nums: [Int]) -> Int {
     3         var res:Int = 0
     4         var n:Int = nums.count
     5         for i in 0..<32
     6         {
     7             var cnt:Int = 0
     8             for num in nums
     9             {
    10                 if num & (1 << i) != 0
    11                 {
    12                     cnt += 1
    13                 }
    14             }
    15             res += cnt * (n - cnt)
    16         }
    17         return res
    18     }
    19 }
  • 相关阅读:
    Python变量状态保持四种方法
    Python参数基础
    Django Form 表单
    Python开发第四篇
    Python开发第三篇
    设计模式(一)概述
    Python自学之路——自定义简单装饰器
    Python开发第二篇
    Python开发第一篇
    Python核心编程——多线程threading和队列
  • 原文地址:https://www.cnblogs.com/strengthen/p/10348281.html
Copyright © 2011-2022 走看看