当前位置: 首页 > news >正文

89. 格雷编码

89. 格雷编码

    • 题目
    • 数学公式
    • 动态规划
    • 回溯

 


题目

传送门:https://leetcode.cn/problems/gray-code/


 


数学公式

int gray(int n) {      // 计算第n位格雷码公式return n ^ (n >> 1);
}

然后你写一个for循环,计算从1到n的所有格雷码,添加到答案数组。

 


动态规划

算例给了 n=2 的解,有了 n = 2 的解,推导怎么得到 n = 3 的解。

n = 2,值范围是 0-3

n = 3,值范围是 0-7

差了一个 2²(4)

4 的二进制是 100

n = 2 算例答案:00 01 11 10(0-1-3-2)

换成n=3范围,都加上 100

变成 100 101 111 110(4-5-7-6)

000 001 011 010
(0-1-3-2)

100 101 111 110
(4-5-7-6)

每个序列都保证了相邻数的二进制一位不同

我们现在把俩个序列拼接,就是 n = 3 的格雷码

序列是符合要求的,唯一不同就是拼接地方不同,序列1最后010和序列2开头100有俩位不同

只变化1位就是倒序拼接,因为2和6不同就是加了4,二进制上也就是多了一个1(第1位加1)

n=4,5,6 原问题 = n-1的子问题 + 2^(n-1) + 倒序拼接

 


回溯

回溯思路,你看这链接的图。

  • https://leetcode.cn/problems/gray-code/solution/hui-su-javadai-ma-zhu-shi-by-xiao-xiao-l-sz0r/
http://www.lryc.cn/news/20596.html

相关文章:

  • 线性回归算法和逻辑斯谛回归算法详细介绍及其原理详解
  • 【网络原理8】HTTP请求篇
  • Playbook的用法
  • APP优化 —— MMAP内存映射
  • paddle.vision 与 torchvision 中的box NMS使用方式
  • php mysql校园帮忙领取快递平台
  • C/C++开发,无可避免的内存管理(篇二)-约束好跳脱的内存
  • 【Java】让我们对多态有深入的了解(九)
  • 12 个适合做外包项目的开源后台管理系统
  • 鼠标更换指针图案和更改typora的主题
  • 【洛谷 P1563】[NOIP2016 提高组] 玩具谜题(模拟+结构体数组+指针)
  • 阿里测试经验7年,从功能测试到自动化测试,我整理的超全学习指南
  • Educational Codeforces Round 143 (Rated for Div. 2)
  • 业务代码编写过程中如何「优雅的」配置隔离
  • English Learning - L2-2 英音地道语音语调 2023.02.23 周四
  • java:线程等待与唤醒 - Object的wait()和notify()
  • 实现弹窗功能并修改其中一个系数
  • vue-draggable浏览器拖拽event事件对象拖动时 DragEvent path undefined
  • 【云原生】搭建k8s高可用集群—20230225
  • LeetCode121_121. 买卖股票的最佳时机
  • 收割不易,五面Alibaba终拿Java岗offer
  • 【离线数仓-4-数据仓库设计-分层规划构建流程】
  • SQL零基础入门学习(十一)
  • 排序基础之插入排序
  • LabVIEW控制DO通道输出一个精确定时的数字波形
  • openpnp - 零碎记录
  • Qt编写微信支付宝支付
  • LeetCode 剑指 Offer 64. 求1+2+…+n
  • Mapper代理开发
  • 为什么在连接mysql时,设置 SetConnMaxIdleTime 没有作用