题目
格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。
给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/gray-code
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
- 运用回溯算法
- 由于题目要求两个连续的数值仅有一个位数的差异,所以设一flag值,进行分步
代码块
class Solution:
def grayCode(self, n: int) -> List[int]:
if n == 0:
return [0]
res = []
def hs(temp, flag):
if len(temp) == n:
res.append(int(temp, 2))
elif flag == 0:
hs(temp + '0', 0)
hs(temp + '1', 1)
else:
hs(temp + '1', 0)
hs(temp + '0', 1)
hs('', 0)
return res