Leetcode 3226. Number of Bit Changes to Make Two Integers Equal
Given two integers start
and goal
, return the number of bit positions in which the two numbers differ. In other words, find how many bits are different between the binary representation of start
and goal
.
For example:
start
is 3
(which is 011
in binary) and goal
is 5
(which is 101
in binary), the function should return 2
because the bits at positions 0 and 1 are different.start
and goal
?
These clarifications confirm the scope and expected handling of the inputs.
start
and goal
, we can employ the XOR operation (^
), which yields a bit set to 1
only where the bits of its operands differ.
start = 3 (011)
, goal = 5 (101)
. The XOR result is 011 ^ 101 = 110
.1
s in the result of start ^ goal
. This can be achieved using the __builtin_popcount method in GCC/Clang or manually counting the bits.start
and goal
.1
s in the binary representation of the XOR result using a bitwise operation loop.#include <iostream>
int minBitFlips(int start, int goal) {
// Step 1: XOR start and goal to get differing bits
int xor_result = start ^ goal;
// Step 2: Count the number of 1 bits in the xor_result
int count = 0;
while (xor_result) {
count += xor_result & 1;
xor_result >>= 1;
}
return count;
}
int main() {
int start = 3;
int goal = 5;
std::cout << "Number of bit changes: " << minBitFlips(start, goal) << std::endl;
return 0;
}
The time complexity of the proposed solution is:
1
will always perform a constant number of operations.The provided solution adheres to the expected performance considerations for bit manipulation problems involving fixed-width integers.
Got blindsided by a question you didn’t expect?
Spend too much time studying?
Or simply don’t have the time to go over all 3000 questions?