Leetcode每日一题
##3226. 使两个整数相等的位更改次数
###C++
给你两个正整数 n 和 k。
你可以选择 n 的 二进制表示 中任意一个值为 1 的位,并将其改为 0。
返回使得 n 等于 k 所需要的更改次数。如果无法实现,返回 -1。
解题思路:
通过除2取余依次获得两个数对应的二进制位的数,如果两个数不相同,可以通过修改满足题意则计数加一,否则返回-1;最终返回-1或计数结果即可。
代码:
class Solution {
public:
int minChanges(int n, int k) {
int n1=n,n2=k,i,j,num=0;
while(n1>0||n2>0){
i = n1%2;
j = n2%2;
if(i!=j){
if(i==0){
return -1;
}
else{
num += 1;
}
}
n1 = n1/2;
n2 = n2/2;
}
return num;
}
};
标签:返回,更改,int,3226,num,n1,n2,Leetcode
From: https://blog.csdn.net/qq_47229957/article/details/143453008