Day35汉明距离

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

java 复制代码
class Solution {
    public int hammingDistance(int x, int y) {
        int cnt = 0;
        while (Math.max(x, y) != 0) {
            if ((x & 1) != (y & 1)) {
                cnt++;
            }
            x = x >> 1;
            y = y >> 1;
        }
        return cnt;
    }
}

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

本题和 2220.转换数字的最少位翻转次数 一样

一次 位翻转 定义为将数字 x 二进制中的一个位进行 翻转 操作,即将 0 变成 1 ,或者将 1 变成 0 。
比方说,x = 7 ,二进制表示为 111 ,我们可以选择任意一个位(包含没有显示的前导 0 )并进行翻转。比方说我们可以翻转最右边一位得到 110 ,或者翻转右边起第二位得到 101 ,或者翻转右边起第五位(这一位是前导 0 )得到 10111 等等。
给你两个整数 start 和 goal ,请你返回将 start 转变成 goal 的 最少位翻转 次数。

相关推荐
q***4652几秒前
Spring Boot 整合 Keycloak
java·spring boot·后端
LSL666_几秒前
spring多配置文件
java·服务器·前端·spring
jakeswang4 分钟前
JDK 25 重大兼容性 Bug
java
麦麦鸡腿堡9 分钟前
Java_HashMap底层机制与原码解读
java·开发语言·jvm
草莓熊Lotso17 分钟前
C++ 抽象类与多态原理深度解析:从纯虚函数到虚表机制(附高频面试题)
java·运维·服务器·开发语言·c++·人工智能·笔记
User_芊芊君子18 分钟前
【LeetCode经典题解】递归破解对称二叉树之谜
算法·leetcode·职场和发展
Rock_yzh19 分钟前
LeetCode算法刷题——49. 字母异位词分组
数据结构·c++·学习·算法·leetcode·职场和发展·哈希算法
小欣加油20 分钟前
leetcode 2654 使数组所有元素变成1的最少操作次数
数据结构·c++·算法·leetcode·职场和发展
Kt&Rs23 分钟前
11.12 LeetCode 题目汇总与解题思路
算法·leetcode
再玩一会儿看代码23 分钟前
Ken的Java学习之路——Java中关于面向对象
java·开发语言·经验分享·python·学习