首页 > 其他分享 >Leetcode每日一题 3226. 使两个整数相等的位更改次数

Leetcode每日一题 3226. 使两个整数相等的位更改次数

时间:2024-11-03 18:45:12浏览次数:6  
标签:返回 更改 int 3226 num n1 n2 Leetcode

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

相关文章