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;
        }
    }
    
  • 相关阅读:
    38
    37
    学记
    36.java_exception_test
    c++中enum的用法——枚举类型
    35
    34
    33
    32
    31
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13074601.html
Copyright © 2011-2022 走看看