Skip to content

Latest commit

 

History

History
81 lines (65 loc) · 1.53 KB

89.md

File metadata and controls

81 lines (65 loc) · 1.53 KB
  1. 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