欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【LeetCode】779. 第K个语法符号

程序员文章站 2022-04-08 12:59:37
...

思路

参考自Ikaruga的题解
【LeetCode】779. 第K个语法符号
通过上图分析,可以得到其实第N行的第K个数字,可以从第N-1行的第(K-1)/2+1个数字产生
因此可以采用递归的方法进行处理

代码

//公式法
//通过找规律可以发现
//第n行的第k个等于第n-1行的第(k-1)/2+1个数产生
//第n-1行的第(k-1)/2+1个数可能为0,可能为1,所以要分两种情况
//判断第n行中的第k个数字,属于奇数还是偶数,奇数选择第一个数字,偶数选择第二个数字(通过%号来选择)
class Solution {
public:
	int kthGrammar(int N, int K) {
		if (N == 1) return 0;
		return kthGrammar(N - 1, (K - 1) / 2 + 1) == 0 ? (K - 1) % 2 : 1 - (K - 1) % 2;
	}
};
相关标签: 算法训练