All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0701_0800.s0779_k_th_symbol_in_grammar.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0701_0800.s0779_k_th_symbol_in_grammar;

// #Medium #Math #Bit_Manipulation #Recursion #2022_03_26_Time_0_ms_(100.00%)_Space_40.9_MB_(42.87%)

/**
 * 779 - K-th Symbol in Grammar\.
 *
 * Medium
 *
 * We build a table of `n` rows ( **1-indexed** ). We start by writing `0` in the 1st row. Now in every subsequent row, we look at the previous row and replace each occurrence of `0` with `01`, and each occurrence of `1` with `10`.
 *
 * *   For example, for `n = 3`, the 1st row is `0`, the 2nd row is `01`, and the 3rd row is `0110`.
 *
 * Given two integer `n` and `k`, return the kth ( **1-indexed** ) symbol in the nth row of a table of `n` rows.
 *
 * **Example 1:**
 *
 * **Input:** n = 1, k = 1
 *
 * **Output:** 0
 *
 * **Explanation:** row 1: 0
 *
 * **Example 2:**
 *
 * **Input:** n = 2, k = 1
 *
 * **Output:** 0
 *
 * **Explanation:** row 1: 0 row 2: 01
 *
 * **Example 3:**
 *
 * **Input:** n = 2, k = 2
 *
 * **Output:** 1
 *
 * **Explanation:** row 1: 0 row 2: 01
 *
 * **Constraints:**
 *
 * *   `1 <= n <= 30`
 * *   1 <= k <= 2n - 1
**/
@SuppressWarnings("java:S1172")
public class Solution {
    /*
     * Time: O(logn)
     * Space: O(1)
     */
    public int kthGrammar(int n, int k) {
        return Integer.bitCount(k - 1) % 2;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy