Leetcode 89. Gray Code
阿新 • • 發佈:2018-12-10
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.
Example 1:
Input: 2 Output:[0,1,3,2]
Explanation: 00 - 0 01 - 1 11 - 3 10 - 2 For a given n, a gray code sequence may not be uniquely defined. For example, [0,2,3,1] is also a valid gray code sequence. 00 - 0 10 - 2 11 - 3 01 - 1
Example 2:
Input: 0
Output: [0]
Explanation: We define the gray code sequence to begin with 0.
A gray code sequence of n has size = 2n, which for n = 0 the size is 20 = 1.
Therefore, for n = 0 the gray code sequence is [0].
Answer:
dfs
class Solution(object): def dfs(self,node,previous,depth,target): if depth==target: self.result=list(previous) return True child=[] for m in self.masks: child.append(node^m) if len(child)==0: return False for c in child: if c not in previous: previous.append(c) result=self.dfs(c,previous,depth+1,target) previous.pop() if result==True: return True def grayCode(self, n): """ :type n: int :rtype: List[int] """ self.masks=[] self.result=[] for i in range(n): self.masks.append(1<<i) self.dfs(0,[0],1,2**n) return self.result