Number of Bit Changes to Make Two Integers Equal

EasyBit Manipulation

Solution

export function minChanges(n: number, k: number): number {
  if ((n & k) !== k) {
    return -1;
  }
  return countBit(n) - countBit(k);
}
 
function countBit(num: number): number {
  let bitCount = 0;
  while (0 < num) {
    bitCount += 1;
    num = num & (num - 1);
  }
  return bitCount;
}

Complexity

  • Time: O(logN)
  • Space: O(1)