(44) ~779. 第K个语法符号

83 阅读1分钟

助教讲的方法,看的我都没有勇气听下去,然后看题解,发现有个比较好理解的,思路如下

image.png

这个看起来还是很好理解的,按照思路码了一遍

var kthGrammar = function(n, k) {
    // 
    if (n === 1) return 0;
    // 计算当前行的长度
    const length = 2**(n-1);
    // 判断k是在当前行的前半段还是后半段
    if(k > length/2){
        // 后半段 取上一行相同位置的 相反数
        return kthGrammar(n-1, k - length/2) === 0 ? 1 : 0;
    } else {
        return kthGrammar(n-1, k);
    }

};