算法(TS):汉明距离

两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。给你两个整数 x 和 y,计算并返回它们之间的汉明距离。

示例 1:

输入:x = 1, y = 4

输出:2

解释:

1 (0 0 0 1)

4 (0 1 0 0)

复制代码
↑    ↑

上面的箭头指出了对应二进制位不同的位置。

示例 2:

输入:x = 3, y = 1

输出:1

提示:

  • 0 <= x, y <= 2^31 - 1

解法一

利用十进制与二进制的转换关系,将x和y都与2求模,如果得到值相同,则将距离加1,同时将x和y都整体右移一位继续求模,直到x和y都不大于1

typescript 复制代码
function hammingDistance(x: number, y: number): number {
    let distance: number = 0

    while(x>0||y>0) {
        if(x%2!==y%2) {
            distance++
        }
        x=x>>>1
        y=y>>>1
    }
    return distance
};

有逻辑运算符代替求模

typescript 复制代码
function hammingDistance(x: number, y: number): number {
    let distance: number = 0

    while(x>0||y>0) {
        if((x&1)!==(y&1)) {
            distance++
        }
        x=x>>>1
        y=y>>>1
    }
    return distance
};

解法二

将x和y先异或,异或的原理是当且仅当输入位不同时输出为 1,计算 x^y 中 1 的个数

typescript 复制代码
function hammingDistance(x: number, y: number): number {
    let distance: number = 0
    let s = x ^ y
    while(s>0) {
        distance += s & 1
        s = s >>> 1
    }
    return distance
};

时间复杂度:O(log⁡C),其中 C 是元素的数据范围,本题中 C === 31。空间复杂度:O(1)。

相关推荐
智驱力人工智能1 小时前
基于视觉分析的人脸联动使用手机检测系统 智能安全管理新突破 人脸与手机行为联动检测 多模态融合人脸与手机行为分析模型
算法·安全·目标检测·计算机视觉·智能手机·视觉检测·边缘计算
2301_764441332 小时前
水星热演化核幔耦合数值模拟
python·算法·数学建模
循环过三天2 小时前
3.4、Python-集合
开发语言·笔记·python·学习·算法
priority_key4 小时前
排序算法:堆排序、快速排序、归并排序
java·后端·算法·排序算法·归并排序·堆排序·快速排序
不染尘.5 小时前
2025_11_7_刷题
开发语言·c++·vscode·算法
来荔枝一大筐6 小时前
力扣 寻找两个正序数组的中位数
算法
算法与编程之美6 小时前
理解Java finalize函数
java·开发语言·jvm·算法
地平线开发者6 小时前
LLM 训练基础概念与流程简介
算法·自动驾驶
点云SLAM6 小时前
弱纹理图像特征匹配算法推荐汇总
人工智能·深度学习·算法·计算机视觉·机器人·slam·弱纹理图像特征匹配
星释6 小时前
Rust 练习册 :Matching Brackets与栈数据结构
数据结构·算法·rust