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 

  • 相关阅读:
    行政区划代码和关键字提取
    清洗数据之地理纬度
    第三周学习进度
    性能战术在代码中的体现
    第二周学习进度
    淘宝网-质量属性场景
    如何做一名好的软件架构师
    寒假学习笔记16
    寒假学习笔记15
    寒假学习笔记14
  • 原文地址:https://www.cnblogs.com/chruny/p/5088728.html
Copyright © 2011-2022 走看看