【格雷码】

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值