🗒️2429. 最小异或
2025-1-27
| 2025-1-27
0  |  阅读时长 0 分钟
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 的数目。

位运算——异或

思路分析:设 cnt1num1 的置位数, cnt2num2 的置位数。
为了让 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。

📎 参考

  • 【题单】位运算
  • 2527. 查询数组异或美丽值1442. 形成两个异或相等数组的三元组数目
    Loading...