LeetCode-in-Java

2220. Minimum Bit Flips to Convert Number

Easy

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:

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:

It can be shown we cannot convert 3 to 4 in less than 3 steps. Hence, we return 3.

Constraints:

Solution

public 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);
    }
}