89. Gray Code

原来是需要借助 gray code 的一些性质,参考维基百科:n位元的格雷码可以从n-1位元的格雷码以上下镜射后加上新位元的方式快速的得到,如下图所示一般。

其实就是把 (n-1) 位的gray code逆序,前面加个1(换成十进制来看就是加了2^(n-1))。

class Solution:
    def grayCode(self, n):
        if n == 0: return [0]
        else:
            res = self.grayCode(n - 1)
            for i in range(len(res) - 1, -1, -1):
                res.append((2 ** (n - 1)) + res[i])
            return res

Last updated

Was this helpful?