Problem
You are given two numbers A and B. Write a function to determine the number of bits need to be flipped to convert integer A to integer B.
OR
A bit flip of a number x
is choosing a bit in the binary representation of x
and flipping it from either 0
to 1
or 1
to 0
.
- For example, for
x = 7
, the binary representation is111
and we may choose any bit (including any leading zeros not shown) and flip it. We can flip the first bit from the right to get110
, flip the second bit from the right to get101
, flip the fifth bit from the right (a leading zero) to get10111
, etc.
Given two integers start
and goal
, return the minimum number of bit flips to convert start
to goal
.
Examples
Example 1:
|
|
Solution
Method 1 - Counting the bits set after XORing 2 numbers
We can do following:
- Calculate XOR of A and B.
a_xor_b = A ^ B
- Count the set bits in the above calculated XOR result.
XOR of two number will have set bits only at those places where A differs from B.
Lets look at the example:
|
|
To get the set bit count please see another post Number of 1 Bits. Here is the basic code
|
|
Code
|
|
|
|
Complexity
- ⏰ Time complexity:
O(n)
wheren
is number of bits in the xor-red number. - 🧺 Space complexity:
O(1)