zoukankan      html  css  js  c++  java
  • 【leetcode】K-th Symbol in Grammar

    题目如下:

    解题思路:直接把每行的数据计算出来肯定是不行的,因为N最大是30,那个第N行长度就是2^30次方,这显然不可取。那么就只能找规律了,我采取的是倒推法。例如假如我们要求出第四行第七个元素的值,记为[4,7],显然[4,7]是从第三行的第四个元素计算得来的[3,4],依次类推接下来是[2,2] ,[1,1] 。这样就形成了一个[4,7] -> [3,4] ->[2,2] -> [1,1]递推链。 而[1,1]的值是确定的就是0,那么[2,2]就是0转换成01的第二个元素1,[3,4]就是1转换成10的第二个元素0,[4,7]就是0转换后01的第一个元素0。

    完整代码如下:

    class Solution(object):
        def kthGrammar(self, N, K):
            """
            :type N: int
            :type K: int
            :rtype: int
            """
            chain = []
            t = N
            p = K
            while t >= 1:
                chain.insert(0,p)
                p = p /2 + p%2
                t -= 1
            print chain
    
            value0 = [0,1]
            value1 = [1,0]
            v = 0
            for i in range(1,len(chain)):
                if chain[i] % 2 == 0 and v == 0:
                    v = value0[1]
                elif chain[i] % 2 == 1 and v == 0:
                    v = value0[0]
                elif chain[i] % 2 == 0 and v == 1:
                    v = value1[1]
                elif chain[i] % 2 == 1 and v == 1:
                    v = value1[0]
            return v
  • 相关阅读:
    书_Delphi
    20160226
    SVG_style_script
    辅助
    电影_Z
    Windows下软件调试
    20160221
    Qt5.3.2_vs10_发布时所需DLL的路径
    android intent 传数据
    android 消息机制
  • 原文地址:https://www.cnblogs.com/seyjs/p/8419467.html
Copyright © 2011-2022 走看看