/*
* 0
* 10
* 01 10
* 01 10 10 01
* 算法思想:如上面所示,可以将k在如果在前半部分则转化为上一个级别的值;
如果在后半部分,转换为上一个级别值得非。
*
*
*/
long long N_2(int N) {
long long i=1;
while(N-- >= 0) i*=2;
return i/2;
}
int kthGrammar(int n, int k){
if((n<= 3) && k==1) return 0;
if((n<= 3) && k==2) return 1;
if((n<= 3) && k==3) return 1;
if((n<= 3) && k==4) return 0;
long long tmp = N_2(n-1);
/*在后半部分*/
if(k>tmp && k<=N_2(n)){
return !kthGrammar(n-1, k-tmp);
}
/* 在前半部分 */
return kthGrammar(n-1, k);
}
LeetCode-779-第K个语法符号-C语言
最新推荐文章于 2022-10-20 18:41:12 发布