Minimum One Bit Operations to Make Integers Zero
HardDynamic ProgrammingBit ManipulationMemoization
Solution
export function minimumOneBitOperations(n: number): number {
if (n <= 1) {
return n;
}
let answer = 0;
let [k, mask] = [0, 1];
while (mask <= n) {
if (n & mask) {
answer = 2 ** (k + 1) - 1 - answer;
}
mask <<= 1;
k += 1;
}
return answer;
}