当前位置: 首页 > article >正文

Day36汉明距离总和

两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。
给你一个整数数组 nums,请你计算并返回 nums 中任意两个数之间 汉明距离的总和 。

在这里插入图片描述

按照之前求海明码的做法做,暴力解超时。

class Solution {
    public int totalHammingDistance(int[] nums) {
        int distance = 0;
        for (int i = 0; i < nums.length - 1; i++) {
            for (int j = i + 1; j < nums.length; j++) {
                int a = nums[i];
                int b = nums[j];
                while (Math.max(a, b) != 0) {
                    if ((a & 1) != (b & 1)) {
                        distance++;
                    }
                    a = a >> 1;
                    b = b >> 1;
                }
            }
        }
        return distance;
    }
}
class Solution {
    public int totalHammingDistance(int[] nums) {
        int ans = 0, n = nums.length;  // 初始化答案为0,n为数组长度
        for (int i = 0; i < 30; ++i) {  // 对于每一位(假设数字不超过30位二进制数)
            int c = 0;  // 统计当前二进制位为1的数字个数
            for (int val : nums) {  // 遍历所有数字
                c += (val >> i) & 1;  // 将每个数字右移i位,检查第i位是否为1
            }
            ans += c * (n - c);  // 对于当前位,计算汉明距离的贡献:有c个数字在该位是1,剩下(n - c)个是0
        }
        return ans;  // 返回总的汉明距离
    }
}

时间复杂度:O(nL),空间复杂度:O(1)。


http://www.kler.cn/a/455190.html

相关文章:

  • 深入解析MySQL索引结构:从数组到B+树的演变与优化
  • 单例模式的写法
  • Express.js 有哪些常用的中间件?
  • Thinkphp 使用workerman消息实现消息推送完整示例
  • 『大模型笔记』评估大型语言模型的指标:ELO评分,BLEU,困惑度和交叉熵介绍以及举例解释
  • ubuntu 网络管理--NetworkManager
  • C#-使用StbSharp库读写图片
  • 构建全志 T113 Tina SDK
  • FlaskAPI-路径参数、查询参数
  • 领域自适应与迁移学习
  • 使用 Spring Boot 实现文件上传:从配置文件中动态读取上传路径
  • “AI考训分析系统:让考试和训练更智能、更高效
  • 软件测试干了5年,过于真实了。。。
  • 《计算机组成及汇编语言原理》阅读笔记:p121-p122
  • 智慧城市可以实现哪些方面的监测
  • Linux 搭建 nginx+keepalived 高可用 | Nginx反向代理
  • Python有哪些常用的库
  • 汇编学习(一)
  • 麒麟操作系统服务架构保姆级教程(五)NGINX中间件详解
  • 《Java源力物语》-4.集合府邸的新秀
  • 地理数据库Telepg面试内容整理-数据库设计与性能优化
  • 【面经】25届 双非本科 字节跳动 北京 四年的总结
  • scala基础学习_运算符
  • --- 网络基础 ---
  • 数据结构二叉树
  • ARM 获取cpu个数