Advertisement
jinhuang1102

89. Gray Code

Apr 24th, 2019
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.11 KB | None | 0 0
  1. """
  2. 89. Gray Code
  3. 这个Gray Code是有特点的, Gary Code 是按中线上下对称的。
  4. 0|00
  5. 0|01
  6.  --- minor
  7. 0|11
  8. 0|10
  9. ----- minor
  10. 1|10
  11. 1|11
  12. 1|01
  13. 1|00
  14.  
  15. 所以呢,在backtrack的时候要做一个copy然后把copy reverse 之后原始list每个值前面加0,copy list每个值前面加1。然后把两个list merge在一起调入下一层的递归。
  16. """
  17.  
  18. class Solution(object):
  19.     def backtrack(self, n, n1, res):
  20.         if n1 > n:
  21.             return
  22.         tmp = res[:]
  23.         tmp.reverse()
  24.         for i in range(0, len(res)):
  25.             res[i] = "0" + res[i]
  26.             tmp[i] = "1" + tmp[i]
  27.            
  28.         res.extend(tmp)
  29.        
  30.         self.backtrack(n, n1+1, res)
  31.         return
  32.    
  33.    
  34.     def grayCode(self, n):
  35.         """
  36.        :type n: int
  37.        :rtype: List[int]
  38.        """
  39.         if n == 0:
  40.             return [0]
  41.        
  42.         res = ['0', '1']
  43.        
  44.         if n > 1:
  45.             self.backtrack(n, 2, res)          
  46.        
  47.         for i in range(0, len(res)):
  48.             res[i] = int(res[i], 2)
  49.            
  50.         return res
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement