Leetcode练习(Python):回溯算法类:第89题:格雷编码:格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。 格雷编码序列必须以 0 开头。

题目:
格雷编码:格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。  给定一个代表编码总位数的非负整数 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
原文地址:https://www.cnblogs.com/zhuozige/p/12860089.html