type
status
date
slug
summary
tags
category
icon
password
创建时间
Feb 25, 2025 02:27 AM
给你一个正整数
n
,你可以执行下述操作 任意 次:n
加上或减去2
的某个 幂
返回使
n
等于 0
需要执行的 最少 操作数。如果
x == 2i
且其中 i >= 0
,则数字 x
是 2
的幂。位运算
遍历的普通解法
这里在判断的时候,可以进行优化,少判断一次
进阶技巧
一行代码搞定。参考 灵茶山艾府
对于多个连续 1,如果它和前面的 1 由至少两个 0 隔开的话,那么就需要先加上 lowbit,产生单个 1,再减去进位产生的 lowbit 去掉这个 1,那么需要操作两次。(两个 lowbit 指代的意思不一样)
(n << 1)