在做力扣题的时候,有一道题
给你两个整数 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]