2220. Minimum Bit Flips to Convert Number

Difficulty:
Related Topics:
Similar Questions:

Problem

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.

Given two integers start and goal, return** the minimum number of bit flips to convert start to **goal.

  Example 1:

Input: start = 10, goal = 7
Output: 3
Explanation: The binary representation of 10 and 7 are 1010 and 0111 respectively. We can convert 10 to 7 in 3 steps:
- Flip the first bit from the right: 1010 -> 1011.
- Flip the third bit from the right: 1011 -> 1111.
- Flip the fourth bit from the right: 1111 -> 0111.
It can be shown we cannot convert 10 to 7 in less than 3 steps. Hence, we return 3.

Example 2:

Input: start = 3, goal = 4
Output: 3
Explanation: The binary representation of 3 and 4 are 011 and 100 respectively. We can convert 3 to 4 in 3 steps:
- Flip the first bit from the right: 011 -> 010.
- Flip the second bit from the right: 010 -> 000.
- Flip the third bit from the right: 000 -> 100.
It can be shown we cannot convert 3 to 4 in less than 3 steps. Hence, we return 3.

  Constraints:

Solution (Java)

class Solution {
    private int decToBinary(int n) {
        int[] binaryNum = new int[32];
        int i = 0;
        while (n > 0) {
            binaryNum[i] = n % 2;
            n = n / 2;
            i++;
        }

        int answer = 0;
        for (int j = i - 1; j >= 0; j--) {
            if (binaryNum[j] == 1) {
                answer++;
            }
        }

        return answer;
    }

    public int minBitFlips(int start, int goal) {
        int answer = start ^ goal;
        return decToBinary(answer);
    }
}

Explain:

nope.

Complexity: