zoukankan      html  css  js  c++  java
  • 779. 第K个语法符号

    <找规律>

    <递归>

    题目描述


    在第一行我们写上一个 0。接下来的每一行,将前一行中的0替换为011替换为10

    给定行数 N 和序数 K,返回第 N 行中第 K个字符。(K从1开始)


    例子:

    输入: N = 1, K = 1
    输出: 0
    
    输入: N = 2, K = 1
    输出: 0
    
    输入: N = 2, K = 2
    输出: 1
    
    输入: N = 4, K = 5
    输出: 1
    
    解释:
    第一行: 0
    第二行: 01
    第三行: 0110
    第四行: 01101001
    


    注意:

    1. N 的范围 [1, 30].
    2. K 的范围 [1, 2^(N-1)].

    我的思路 - 迭代


     (误)

    class Solution:
        def kthGrammar(self, N: int, K: int) -> int:
         # 省略N=1,N=2的判定,初始从N=3开始 n
    = '01' pre = n for i in range(3,N+1): if i%2==1: n = n+n[::-1] else: n += pre[::-1]+pre pre=n return n
    • 算法:

    1. 找规律,奇数行很简单,上一行 + 上一行的反转
    2. 偶数行 = 上一行 + 上一个偶数行的反转 + 上一个偶数行
    3. 2  01
      3  0110
      4  01101001
      5  0110100110010110
      6  01101001100101101001011001101001
      7  0110100110010110100101100110100110010110011010010110100110010110
    • 存在的问题:

    1. 虽然把时间优化了,但是2^30的空间还是爆炸性的!
  • 相关阅读:
    Win7系统安装Centos7.0双系统(一)
    CentOS7安装Oracle 11g R2 详细过程——零基础
    分页整理
    文件压缩与挤压ZIP
    js阻止事件冒泡
    input上传图片
    ios web input 内边阴影
    JS中如何处理多个ajax并发请求?
    jquery的deferred使用详解
    HTTP常见状态码
  • 原文地址:https://www.cnblogs.com/remly/p/12777169.html
Copyright © 2011-2022 走看看