楼主: 
JIWP (JIWP)   
2025-01-15 21:32:12好久没发每日文了
2429. Minimize XOR
思路:
先数num1、num2化成二进制后分别有几个1
假设num1、num2画成二进制后1的个数为cnt1、cnt2
分成3个情况
1. cnt1 = cnt2 :
直接回传num1
2. cnt1 > cnt2 :
假设diff = cnt1 - cnt2
从低位开始把num1是1的位数变为0
重复上述动作 diff 次
最后回传num1
3. cnt1 < cnt2 :
假设diff  = cnt2 - cnt1
从低位开始把num1是0的位数变成1
重复上述动作diff次
最后回传num1
golang code :
func minimizeXor(num1 int, num2 int) int {
        cnt1, cnt2, tmp := 0, 0, num1
        for num2 > 0 {
                cnt2 += num2 & 1
                num2 >>= 1
        }
        for num1 > 0 {
                cnt1 += num1 & 1
                num1 >>= 1
        }
        ans, idx := tmp, 0
        if cnt1 == cnt2 {
                return tmp
        } else if cnt1 < cnt2 {
                cnt2 -= cnt1
                for cnt2 > 0 {
                        if tmp&1 == 0 {
                                ans |= (1 << idx)
                                cnt2