- Grey Code
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.
my thoughts:
1. what is the pattern?
0000 -- 0
0001 -- 1
0011 -- 3 1+1
0010 -- 2 1+0
0110 -- 6 1+10
0111 -- 7 1+11
0101 -- 5 1+01
0100 -- 4 1+00
2. grey code formula:
G(i) = i^(i>>1)
my solution:
**********65ms
class Solution:
def grayCode(self, n):
"""
:type n: int
:rtype: List[int]
"""
res = []
if n <= 0:
return [0]
res.append(0)
res.append(1)
for i in range(1, n):
cur = []
for num in res[::-1]:
cur.append((1<<i) + num)
res.extend(cur)
return res
**********70ms
class Solution:
def grayCode(self, n):
"""
:type n: int
:rtype: List[int]
"""
res = []
for i in range(1<<n):
res.append(i ^ (i>>1))
return res
my comments:
from other ppl's solution:
1. N/A