【格雷码】
发布日期:2021-05-04 14:00:25 浏览次数:26 分类:技术文章

本文共 396 字,大约阅读时间需要 1 分钟。

在做力扣题的时候,有一道题

给你两个整数 n 和 start。你的任务是返回任意 (0,1,2,…,2^n-1) 的排列 p,并且满足:

p[0] = start

p[i] 和 p[i+1] 的二进制表示形式只有一位不同
p[0] 和 p[2^n -1] 的二进制表示形式也只有一位不同

即,将这串数码首尾相连,能保证在这个环中的每两个相邻的数符都只有一位不同(二进制)

格雷码的编码方式也很简单,是一种迭代的方式

假设你知道n位格雷码的编码,则n+1位的格雷码 = n位格雷码的顺序(前缀+0) + n位格雷码的逆序(前缀+1)

这样,在我们知道1位格雷码的编码方式后( [0,1] )

通过迭代即可知道任意位格雷码的编码方式

例:2位格雷码 = 1位格雷码的顺序(前缀+0) + n位格雷码的逆序(前缀+1)

→ 00,01 + 11,10
可得2位格雷码的编码[00,01,11,10]

上一篇:【9月打卡~Leetcode每日一题】347. 前 K 个高频元素(难度:中等)
下一篇:【9月打卡~Leetcode每日一题】107. 二叉树的层次遍历 II(难度:简单)

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年03月23日 23时52分56秒