描述
该题来自于力扣第89题
分析
首先假设长度为2
的格雷码已经生成好了,为
1
00 01 11 10
现在要生成长度为3
的格雷码,直接将长度为2
的翻转并追加到后面,
1
00 01 11 10 10 11 01 00
可以此时每个字符相差不超过1
,这时前半部分添加前缀0
,后半部分添加前缀1
,就好了
1
000 001 011 010 110 111 101 100
用这种递归方法就可以生成任意长度的格雷码。
还有一种方法直接使用公式生成,第n
个格雷码为n ^ (n >> 1)
。
代码
1 | class Solution: |