class Solution:
def minimumOneBitOperations(self, n: int) -> int:
if n == 0:
return 0
k = 1
while (k << 1) <= n:
k <<= 1
return (k << 1) - 1 - self.minimumOneBitOperations(k ^ n)class Solution:
def minimumOneBitOperations(self, n: int) -> int:
res = 0
k = 1 << 30
sign = 1
while n:
while k > n:
k >>= 1
res += (sign * ((k << 1) - 1))
sign *= -1
n ^= k
return resclass Solution:
def minimumOneBitOperations(self, n: int) -> int:
res, sign = 0, 1
while n:
res += sign * (n ^ (n - 1))
n &= (n - 1)
sign *= -1
return abs(res)class Solution:
def minimumOneBitOperations(self, n: int) -> int:
res = n
while n:
n >>= 1
res ^= n
return res