博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
89 Gray Code
阅读量:5376 次
发布时间:2019-06-15

本文共 1333 字,大约阅读时间需要 4 分钟。

因为是硬件出生,所以相对比较容易

"""89. Gray CodeMedium267919The 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: 2Output: [0,1,3,2]Explanation:00 - 001 - 111 - 310 - 2For 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 - 010 - 211 - 301 - 1Example 2:Input: 0Output: [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]."""

格雷码就是一种相邻两位只有一个符号差别的编码,可以减少数据误差

格雷码有两个特点,拿三位格雷码举例

0000,0001,0011,0010,0110,0111,0101,0100,

1、前2位和2位格雷码相同

2、后两位看到前半段和后半段是顺序相反的,

所以做n位格雷码只要先做n-1位格雷码,再在最后加上后半段就行了

class Solution:    def grayCode(self, n):        """        :type n: int        :rtype: List[int]        """        result = []        #0位格雷码        result.append(0)        for i in range(1, n+1):            #num是前面的数字个数也是后面的数字要加的数            num = 2**(i-1)            #从后向前取反方向            result.extend((i+num for i in reversed(result)))        return result

 

转载于:https://www.cnblogs.com/mangmangbiluo/p/10069860.html

你可能感兴趣的文章
JavaScript 技巧与高级特性
查看>>
Uva 11729 Commando War
查看>>
增强学习(一) ----- 基本概念
查看>>
ubuntu下USB连接Android手机
查看>>
C# 语句 分支语句 switch----case----.
查看>>
反射获取 obj类 的属性 与对应值
查看>>
表单中的readonly与disable的区别(zhuan)
查看>>
win10下安装配置mysql-8.0.13--实战可用
查看>>
周记2018.8.27~9.2
查看>>
MySQL中 1305-FUNCTION liangshanhero2.getdate does not exit 问题解决
查看>>
python序列化和json
查看>>
mongodb
查看>>
SSH-struts2的异常处理
查看>>
《30天自制操作系统》学习笔记--第14天
查看>>
LGPL协议的理解
查看>>
1、Python基础
查看>>
Unity The Tag Attribute Matching Rule
查看>>
试着理解下kvm
查看>>
WebService学习总结(二)--使用JDK开发WebService
查看>>
Tizen参考手机RD-210和RD-PQ
查看>>