https://leetcode-cn.com/problems/gray-code/
位运算确实nb,这代码越短想得越多,看网上的方法看的我一愣一愣的。都是神仙
class Solution:
def grayCode(self, n: int) -> List[int]:
res = [0]
for i in range(n):
for j in range(len(res) - 1, -1, -1):#for循环,从len(res)-1到-1,每次步长为-1
res.append(res[j] ^ (1 << i))#异或,用的是位操作,将res[j]与(1<<i)化为二进制再取相同为0,不同为1,如3^4就是11,100,则返回的是111=7.1<<i代表的是1左移i位。
return res
整体上就是以二进制数的每一位为节点,用位操作得到符合格雷编码性质的数字。