Skip to content

Commit f1c5079

Browse files
committed
feat: update solution to lc problem: No.0779
No.0779.K-th Symbol in Grammar
1 parent 0aed2d7 commit f1c5079

File tree

1 file changed

+21
-0
lines changed
  • solution/0700-0799/0779.K-th Symbol in Grammar

1 file changed

+21
-0
lines changed

solution/0700-0799/0779.K-th Symbol in Grammar/README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,27 @@
5656

5757
<!-- 这里可写通用的实现逻辑 -->
5858

59+
**方法一:递归**
60+
61+
我们先来看一下前几行的规律:
62+
63+
```
64+
n = 1: 0
65+
n = 2: 0 1
66+
n = 3: 0 1 1 0
67+
n = 4: 0 1 1 0 1 0 0 1
68+
n = 5: 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0
69+
...
70+
```
71+
72+
可以发现,每一行的前半部分和上一行完全一致,后半部分是上一行的反转。注意,这里的“反转”指的是 $0$ 变 $1$, $1$ 变 $0$。
73+
74+
如果 $k$ 在前半部分,那么第 $k$ 个字符就是上一行的第 $k$ 个字符,直接递归 $kthGrammar(n - 1, k)$ 即可。
75+
76+
如果 $k$ 在后半部分,那么第 $k$ 个字符就是上一行的第 $k - 2^{n - 2}$ 个字符的反转,即 $kthGrammar(n - 1, k - 2^{n - 2}) \oplus 1 $。
77+
78+
时间复杂度 $O(n)$,空间复杂度 $O(n)$。
79+
5980
<!-- tabs:start -->
6081

6182
### **Python3**

0 commit comments

Comments
 (0)