您的位置:首页 > 编程语言 > Python开发

[Leetcode][python]Gray Code

2017-10-28 01:47 330 查看

题目大意

求格雷码

解题思路

格雷码维基百科:

https://zh.wikipedia.org/wiki/%E6%A0%BC%E9%9B%B7%E7%A0%81

代码

class Solution(object):
def grayCode(self, n):
"""
:type n: int
:rtype: List[int]
"""
res = []
size = 1 << n  # 若n=4,左移4位,从1到了10000,就是16(高位丢弃,低位补0)
print bin(size)
for i in range(size):
# print i, bin(i), bin((i >> 1)), bin((i >> 1) ^ i)  # 最后求异或
res.append((i >> 1) ^ i)
return res


看输出理解:

0b10000
0 0b0 0b0 0b0
1 0b1 0b0 0b1
2 0b10 0b1 0b11
3 0b11 0b1 0b10
4 0b100 0b10 0b110
5 0b101 0b10 0b111
6 0b110 0b11 0b101
7 0b111 0b11 0b100
8 0b1000 0b100 0b1100
9 0b1001 0b100 0b1101
10 0b1010 0b101 0b1111
11 0b1011 0b101 0b1110
12 0b1100 0b110 0b1010
13 0b1101 0b110 0b1011
14 0b1110 0b111 0b1001
15 0b1111 0b111 0b1000


总结

位操作符复习:

http://www.runoob.com/python/python-operators.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python leetcode