LeetCode in Kotlin

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.

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:

Solution

class Solution {
    /*
     * Time: O(logn)
     * Space: O(1)
     */
    fun kthGrammar(n: Int, k: Int): Int {
        return Integer.bitCount(k - 1) % 2 + n - n
    }
}