type
status
date
slug
summary
tags
category
icon
password
创建时间
Jan 27, 2025 03:20 PM
给你三个正整数
a、b 和 c。你可以对
a 和 b 的二进制表示进行位翻转操作,返回能够使按位或运算 a OR b == c 成立的最小翻转次数。「位翻转操作」是指将一个数的二进制表示任何单个位上的 1 变成 0 或者 0 变成 1 。
位运算——与或(AND/OR)
遍历
直接按照题意判断每一位的的情况。
根据运算性质
- c == 0
- a == 0, b == 0:不用操作
- a == 1 或者 b == 1(两者不同时为 1):只操作一次
- a == 1,b == 1:需要操作两次
- c == 1
- a == 0, b == 0:操作一次
- a 和 b 至少有一个为 1:不用操作
而
(a | b) ^ c 表示 (a | b) 和 c 可以根据最后的 1 得到有多少不同的位数。但是有一个例外 a == 1,b == 1, c == 0 时,需要增加一次额外的次数,我们进行特判。📎 参考
- 无