Leetcode -2220. Minimum Bit Flips to Convert Number

 In this problem there give two  numbers 

Let's we need assume that numbers name as "n" and "m" here based on the problem statement we need convert "n" value to "m" value by shifting minimum number of bit shift 

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 is 111 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 get 110, flip the second bit from the right to get 101, flip the fifth bit from the right (a leading zero) to get 10111, etc.

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

    These are the input for clear understand

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.

here is the my approach there is simple i converting both numbers into binary at once and  parallel i checking the the bits are equal or not, if its equal not need for count increment  otherwise increasing the count in above statement and given explanation we can easily assess when bits are different need to count here is the code below for clear understanding, one more thing is it takes time complexity 3ms there so much optimal solutions there it can easily understand 

class Solution {
public:
    int minBitFlips(int n, int m)     {
        int count=0;
        while(n>0||m>0){
            if(n%2!=m%2){
                count++;
              }
            n=n/2;
            m=m/2;
            }
        return count;
    }
};


CODE EXPLANATION:

in we declared the count to 0 int count=0;  and in while loop we use logical or because if there is any number reduced zero but not another one is not reduced to zero, in that case we placed the or   while(n>0||m>0)   as we said the if condition if(n%2!=m%2) when there is different number the count gets increment count++;  and the number is reduced in binary format i already told my previews post how the number converted into binary  

my leetcode profile given below:

https://leetcode.com/u/vinaykumar333j/

My greekforgreek profile is given below follow:

https://www.geeksforgeeks.org/user/vinaykum6ho4/


Post a Comment

0 Comments