楼主:
JIWP (JIWP)
2025-11-08 22:55:171611. Minimum One Bit Operations to Make Integers Zero
思路:
这题观察一下可以知道
先考虑最左边的是1的bit
想要让 2^k 变成 0, 需要 2^(k+1) - 1次操作
在这个过程中 0 ~ 2^(k+1) - 1 的值都会出现
所以想要求将n变成0要几次操作
要先知道让n变成0, 跟0变成n需要的操作是一样多次
假设n最左边值是1的bit在第x位
那答案就会是 2^(x+1)-1 - minimumOneBitOperations(n - 2^x)
golang code :
func minimumOneBitOperations(n int) int {
if n <= 1 {
return n
}
k := 0
for i := 1; i <= n; i <<= 1 {
k++
}
return 1<<k-1 - minimumOneBitOperations(n-(1<<(k-1)))
}