3226. 使两个整数相等的位更改次数

思路

模拟,位运算

Solutions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
int minChanges(int n, int k) {
int cnt=0;
for(int i=31;i>=0;i--){
if((n>>i)&1!=(k>>i)&1){
if(!((k>>i)&1)){
n&=~(1<<i);
cnt++;
}
}
}
if(n==k)return cnt;
else return -1;
}
};