zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 779 第K个语法符号(递归)

    779. 第K个语法符号

    在第一行我们写上一个 0。接下来的每一行,将前一行中的0替换为01,1替换为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

    注意:

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

    class Solution {
         public int kthGrammar(int N, int K) {
             //我这里k-1了,所以与题意正好相反了
            return recursion(N, K - 1);
        }
        
        public int recursion(int N, int k){
            if(N == 1)  return 0;
            int res = 0;
            //首先要得到前N - 1排的那个数字
            int num = recursion(N - 1, k / 2);
            if(k % 2 == 0){
                if(num == 1)    res = 1;
                else    res = 0;
            }else{
                if(num == 1)    res = 0;
                else    res = 1;
            }
            return res;
        }
    }
    
  • 相关阅读:
    BZOJ 4525 二分
    BZOJ 4565 状压DP
    BZOJ 3930 容斥原理
    BZOJ 4562 搜索...
    BZOJ 4563 错排+高精度
    BZOJ 1833 数位DP
    BZOJ 4517 组合数+错排
    python 入门学习(二)
    python 入门学习
    Python 爬虫
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946121.html
Copyright © 2011-2022 走看看