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。