0
点赞
收藏
分享

微信扫一扫

格雷编码--Python实现

kiliwalk 2023-05-20 阅读 75

n 位格雷码序列 是一个由 2n 个整数组成的序列,其中: 每个整数都在范围 [0, 2n - 1] 内(含 0 和 2n - 1) 第一个整数是 0 一个整数在序列中出现 不超过一次 每对 相邻 整数的二进制表示 恰好一位不同 ,且 第一个 和 最后一个 整数的二进制表示 恰好一位不同 给你一个整数 n ,返回任一有效的 n 位格雷码序列 。

class Solution:
    def grayCode(self, n: int) -> List[int]:
        '''
        n = 2  [ 00,  01,  11,  10] 
        补   1 [100, 101, 111, 110] 
        逆  序 [110, 111, 101, 100] 
        n = 3 [000, 001, 011, 010, 110, 111, 101, 100]
        归纳总结:n位格雷码的前一半是n - 1位格雷码的高位补0,后一半是高位补1的逆序
        '''
        res, one = [0], 1
        for _ in range(n):
            for j in range(len(res)-1,-1,-1):
                res.append(one + res[j])
            one <<= 1
        return res

 

举报

相关推荐

0 条评论