1.code
class Solution {
public int kthGrammar(int N, int K) {
if(N==1)return 0;
return (~K & 1)^kthGrammar(N-1,(K+1)/2);
}
}
2.题解分析
第一行 0
第二行 01
第三行 0110
第四行 01101001
可以总结规律,某一行的第 K 个数字是上一行第 (K+1) / 2 个数字生成的。如果上一行的数字为 0,被生成的数字为 1 - (K%2),如果上一行的数字为 1,被生成的数字为 K%2。
参考资源:leetcode官方题解。