LeetCode 779 第K个语法符号[递归 找规律] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 779 第K个语法符号[递归 找规律] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。

解题思路:
通过二叉树的思想将表展开,首先每个节点的值是由父节点决定的,其次观察可以发现每行奇数位节点的值和父节点相同,那么我们要做的就是找到父节点的值,然后根据当前节点所在行的奇偶性返回值,找父节点通过不断递归实现,代码如下:

class Solution 
public:
    int kthGrammar(int n, int k) 
        // 最顶点永远是0
        if(n == 1 && k == 1) 
            return 0;
                
        // 找父节点
        int a = kthGrammar(n - 1, (k + 1)/ 2);
        int b = a ^ 1;
        // 奇数位和父节点相同,否则不同
        return (k % 2 == 0) ? b : a;
    
;

以上是关于LeetCode 779 第K个语法符号[递归 找规律] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 779. K-th Symbol in Grammar ---回溯

[LeetCode] K-th Symbol in Grammar 语法中的第K个符号

[leetcode-779-K-th Symbol in Grammar]

数据结构与算法之深入解析“第K个语法符号”的求解思路与算法示例

分治与递归-找k个临近中位数的数

LeetCode 第25题: k个一组翻转链表