题目:
格雷编码:格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。 格雷编码序列必须以 0 开头。
思路:
想了一下午回溯的思路没有成功,之后想到补上。
格雷码想到了当时学的《数字电子技术》,里面有使用门电路实现格雷码的部分,因为有相应的计算公式,所以直接套用公式了,即每一位和前面一位的异或(二进制)。
程序:
class Solution:
def grayCode(self, n: int) -> List[int]:
if n == 0:
return [0]
if n == 1:
return [0,1]
result = []
for index in range(2 ** n):
result.append(index ^ index >> 1)
return result