6365. 将整数减少到零需要的最少操作数]
难度
- Easy
- Medium
- Hard
思路
虽然分类是 Easy ,但确实花了点时间。
对于涉及到 2 的幂的题目,直接从十进制角度考虑是比较费事的。在这个思路上碰壁之后,我尝试在二进制形式上找规律。随后发现,本题要做的,就是在有连续 1 的地方加上一个 1 (要考虑进位),计一个操作数,直到数字中只有离散 1 ,每个 1 计一个操作数,最后返回即可。
代码
class Solution:
def minOperations(self, n: int) -> int:
queue = []
ans = 1
while n:
queue.append(n & 1)
n >>= 1
while queue and queue[0] == 0:
queue.pop(0)
if len(queue) == 2:
if queue[1] == 1:
n += 1
ans += 1
queue = []
return ans
Comments NOTHING