class Solution {
public:
int kthGrammar(int n, int k) {
//第n行共有2^(n - 1)个数
//如果k > 2^(n - 1) / 2 说明在后半段, 此时可以转换为前半段
//即k = k - 2^(n - 1) / 2, 此时需要换一次方向
//否则 k = k;无需修改方向
//最后蒋规模缩小一半,直至规模为1
int s = 2 << (n - 1);
int turn_count = 0;
int res = -1;
while (s > 1) {
s >>= 1;
if (k > s) {
k -= s;
turn_count ++;
}
}
if (turn_count % 2) res = 1;
else res = 0;
return res;
}
};
力扣779,第K个语法符号(优雅二分)
最新推荐文章于 2025-06-02 03:12:24 发布
该博客详细介绍了如何使用C++编写一个递归函数来解决斐波那契数列问题。通过巧妙地利用位运算减少计算量,实现了高效的kthGrammar函数,该函数在给定行数n和位置k时,返回第k个斐波那契数。博客内容涵盖了递归、位运算和算法优化等概念。

2万+

被折叠的 条评论
为什么被折叠?



