1. 使两个整数相等的位更改次数
3226. 使两个整数相等的位更改次数
给你两个正整数 n
和 k
。
你可以选择 n
的 二进制表示 中任意一个值为 1 的位,并将其改为 0。
返回使得 n
等于 k
所需要的更改次数。如果无法实现,返回 -1。
class Solution {public int minChanges(int n, int k) {// a ^ b 异或操作// a & b 按位相与的操作// 思路一:如果n与k的安按位结果不等于 k,说明k存在某一位为1,而n对应的位为0,此时无法让n转变为kif((n & k ) != k) return -1;// 说明可以转化,那找到 n 与 k 相异的位即可,有多少位就要转化几次// 可以使用 java中的bitCount() 来找到二进制中 1 的个数return Integer.bitCount(n ^ k);}
}