1318. Minimum Flips to Make a OR b Equal to c
Description
Given 3 positives numbers a
, b
and c
. Return the minimum flips required in some bits of a
and b
to make ( a
OR b
== c
). (bitwise OR operation).
Flip operation consists of change any single bit 1 to 0 or change the bit 0 to 1 in their binary representation.
Example 1:
Input: a = 2, b = 6, c = 5 Output: 3 Explanation: After flips a = 1 , b = 4 , c = 5 such that (a OR b == c)
Example 2:
Input: a = 4, b = 2, c = 7 Output: 1
Example 3:
Input: a = 1, b = 2, c = 3 Output: 0
Constraints:
1 <= a <= 10^9
1 <= b <= 10^9
1 <= c <= 10^9
Solutions
Solution 1: Bit Manipulation
We can enumerate each bit of the binary representation of \(a\), \(b\), and \(c\), denoted as \(x\), \(y\), and \(z\) respectively. If the bitwise OR operation result of \(x\) and \(y\) is different from \(z\), we then check if both \(x\) and \(y\) are \(1\). If so, we need to flip twice, otherwise, we only need to flip once. We accumulate all the required flip times.
The time complexity is \(O(\log M)\), where \(M\) is the maximum value of the numbers in the problem. The space complexity is \(O(1)\).
1 2 3 4 5 6 7 |
|
1 2 3 4 5 6 7 8 9 10 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 |
|