The gray code is a binary numeral system where two successive values differ in only one bit.
Given a non-negative integer n representing the total number of bits in the code, print the sequence of gray code. A gray code sequence must begin with 0.
For example, given n = 2, return [0,1,3,2]
. Its gray code sequence is:
00 - 0 01 - 1 11 - 3 10 - 2
Note:
For a given n, a gray code sequence is not uniquely defined.
For example, [0,2,3,1]
is also a valid gray code sequence according to the above definition.
For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that.
题意不是很清晰。 Grey Code在数学中有定义,不是仅仅是每次变换一个bit即可。 如果给出Grey Code的定义 (i<<1) ^ i , 这个题目就解决了。‘
class Solution:
# @return a list of integers
def grayCode(self, n):
if n < 0 : return []
if n==0 : return [0]
size = 1<<n
res = []
for i in range(size):
res.append( (i>>1) ^ i )
return res