1611. 使整数变为 0 的最少操作次数

1611. 使整数变为 0 的最少操作次数

格雷码解法的数学原理

1. 格雷码的本质特性

格雷码(Gray Code)是一种二进制编码系统,其中任意两个相邻数的二进制表示仅有一位不同。这个特性与本题要求的"每次只能翻转一个比特位"的操作限制完全匹配,因此n到0的最少位操作次数恰好等于n的格雷码值。

2. 核心数学公式

n的格雷码值计算公式为:

G(n) = n ⊕ (n >> 1)

(⊕表示异或运算,>>表示右移操作)

3. 算法实现逻辑
python 复制代码
def minimumOneBitOperations(n: int) -> int:
    result = 0
    while n > 0:
        result ^= n  # 累积异或结果
        n >>= 1      # 右移消除最低位
    return result
4. 运算过程解析(以n=9为例)
  • 二进制表示:9 = 1001₂
  • 步骤1:result = 0 ⊕ 1001 = 1001(9),n变为100(4)
  • 步骤2:result = 1001 ⊕ 100 = 1101(13),n变为10(2)
  • 步骤3:result = 1101 ⊕ 10 = 1111(15),n变为1(1)
  • 步骤4:result = 1111 ⊕ 1 = 1110(14),n变为0
  • 最终结果:14(与预期一致)
5. 几何意义

可以将二进制数视为n维超立方体的顶点,每次位翻转相当于在立方体的边上移动。格雷码对应着一条遍历所有顶点的哈密顿路径,而算法计算的正是从n点到原点的最短路径长度。

相关推荐
江畔柳前堤2 小时前
大语言模型分布式训练:从并行策略到万卡工程的系统梳理
人工智能·分布式·深度学习·算法·目标检测·机器学习·语言模型
Forever Nore3 小时前
LeetCode 4 寻找两个正序数组的中位数 - 二分
算法·leetcode
罗西的思考5 小时前
【OpenClaw具身硬件】MiniClaw 阅读笔记---(1)基础
人工智能·算法·机器学习
蛋先生DX5 小时前
大模型参数存储格式揭秘:BF不是男朋友
深度学习·算法·llm
爱跳舞的烤冷面6 小时前
自学嵌入式第22天(数据结构——哈希)
数据结构·算法·哈希算法
猎嘤一号6 小时前
博弈论(Game Theory)的理论、算法与工程
人工智能·算法·安全·博弈论
月光船幽幽6 小时前
影子模式下保护 logits 不被修改
人工智能·python·算法
马拉AI6 小时前
腾讯开源 Agent 记忆系统,AI“换对话就忘”的问题有了新解法(附安装使用教程)
人工智能·算法·开源·科研
地平线开发者8 小时前
征程6工具链模型X86推理方式说明
算法
地平线开发者8 小时前
【征程6】校准量化中HistogramObserver解析
算法