type
status
date
slug
summary
tags
category
icon
password
创建时间
Jan 27, 2025 09:51 AM
给你两个正整数
num1
和 num2
,找出满足下述条件的正整数 x
:x
的置位数和num2
相同,且
x XOR num1
的值 最小
注意
XOR
是按位异或运算。返回整数
x
。题目保证,对于生成的测试用例, x
是 唯一确定 的。整数的 置位数 是其二进制表示中
1
的数目。位运算——异或
思路分析:设
cnt1
为 num1
的置位数, cnt2
为 num2
的置位数。为了让
x XOR num1
的值 最小,我们应该将 num1
从高位到低位把 1 变为 0。如果匹配完了还有多余的 1,那么就从低位到高位把 0 改成 1。分类讨论:
cnt1 == cnt2
:令x = num1
cnt1 > cnt2
:x 等于将num1
的最低的c1 - c2
个 1 变成 0。
cnt1 < cnt2
:x 等于将num1
的最低的c2 - c1
个 0 变成 1。