前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Leetcode][python]Gray Code/格雷编码

[Leetcode][python]Gray Code/格雷编码

作者头像
蛮三刀酱
发布2019-03-26 16:00:41
5930
发布2019-03-26 16:00:41
举报

题目大意

求格雷码

解题思路

格雷码维基百科: https://zh.wikipedia.org/wiki/%E6%A0%BC%E9%9B%B7%E7%A0%81 以二进制为0值的格雷码为第零项,第一项改变最右边的位元,第二项改变右起第一个为1的位元的左边位元,第三、四项方法同第一、二项,如此反复,即可排列出n个位元的格雷码。

代码

代码语言:javascript
复制
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

看输出理解:

代码语言:javascript
复制
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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年10月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目大意
  • 解题思路
  • 代码
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档