zoukankan      html  css  js  c++  java
  • [LeetCode]题解(python):089-Gray Code

    题目来源:

      https://leetcode.com/problems/gray-code/


    题意分析:

      给定一个n,返回他的一个格雷序列。比如n=2,[0,1,3,2]是他的一个格雷序列。格雷序列就是,长度为n的二进制,起始序列是全是0,而下一个序列和上一个序列只相差一个bit。也就是00,01,11,10,两两之间的字符相差只有一个字节。


    题目思路:

      格雷序列是有很多个结果的。我觉得这个题目的难度不在于找到一个格雷序列,而是要找到出题者的序列,因为题目只有一个特定的序列。最简单的格雷序列就是刚开始0,然后将小于2^n所有的奇数从大到小列出,然后将小于2^n所有的偶数由大到小列出。而出题者要求的格雷码是将前一个数右移一位,然后和原来的进行^操作。


    代码(Python):

      

    import math
    class Solution(object):
        def grayCode(self, n):
            """
            :type n: int
            :rtype: List[int]
            """
            if n == 0:
                return [0]
            m = pow(2,n) - 1
            ans = [0,1]
            i = 3
            while i <= m:
                ans.append(i)
                i += 2
            i -= 3
            while i > 0:
                ans.append(i)
                i -= 2
            return ans
    一个可能的序列
    import math
    class Solution(object):
        def grayCode(self, n):
            """
            :type n: int
            :rtype: List[int]
            """
            ans = []
            size = pow(2,n)
            for i in range(size):
                ans.append((i >> 1)^i)
            return ans
    answer

    转载请注明出处:http://www.cnblogs.com/chruny/p/5088728.html 

  • 相关阅读:
    jQuery 点击超链接生成一个的页面,点击几次,生成几个新页面
    Zookeeper基本信息
    性能测试基础
    Java安装及基础01
    手机抓包手册
    在linux环境下部署禅道环境
    Linux基础命令2
    Linux基础命令1
    SQL SERVER 基本操作语句
    MYSQL多表查询
  • 原文地址:https://www.cnblogs.com/chruny/p/5088728.html
Copyright © 2011-2022 走看看