LeetCode in Kotlin

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

@Suppress("NAME_SHADOWING")
class Solution {
    private fun decToBinary(n: Int): Int {
        var n = n
        val binaryNum = IntArray(32)
        var i = 0
        while (n > 0) {
            binaryNum[i] = n % 2
            n = n / 2
            i++
        }
        var answer = 0
        for (j in i - 1 downTo 0) {
            if (binaryNum[j] == 1) {
                answer++
            }
        }
        return answer
    }

    fun minBitFlips(start: Int, goal: Int): Int {
        val answer = start xor goal
        return decToBinary(answer)
    }
}