我们构建了一个包含
n
行( 索引从 1 开始 )的表。首先在第一行我们写上一个0
。接下来的每一行,将前一行中的0
替换为01
,1
替换为10
。
- 例如,对于
n = 3
,第1
行是0
,第2
行是01
,第3行是0110
。给定行数
n
和序数k
,返回第n
行中第k
个字符。(k
从索引 1 开始)
示例 1:输入: n = 1, k = 1 输出: 0 解释: 第一行:0示例 2:
输入: n = 2, k = 1 输出: 0 解释: 第一行: 0 第二行: 01示例 3:
输入: n = 2, k = 2 输出: 1 解释: 第一行: 0 第二行: 01提示:
1 <= n <= 30
1 <= k <= 2n - 1
/**
* @param {number} n
* @param {number} k
* @return {number}
*/
var kthGrammar = function(n, k) {
if(n === 1) return 0;
if(k % 2 === 0){
return kthGrammar(n-1,k/2) === 0 ? 1 : 0;
}else{
return kthGrammar(n-1,Math.floor(k/2)+1);
}
};