题目描述
解题思路
- 首先我们要得到两个数字之间不同的地方,然后我们要比较那些不同的地方。
- 定义一个函数叫做
getCnt1Count这个函数的作用是获取到两个数之间不同的地方 - 将两个数异或运算的结果返回函数。然后获取到这个传进来的数有多少个二进制的1.
- 二进制的1就是要翻转的地方,找到一个就将cnt++
- 将cnt返回回去
代码实现
class Solution {
int getCnt1Count(int x){
int cnt=0;
while(x>0){
x &= (x-1);
cnt++;
}
return cnt;
}
public:
int minBitFlips(int start, int goal) {
return getCnt1Count(start^goal);
}
};