- 89 格雷编码
- 144 二叉树的前序遍历
89. 格雷编码
格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。
给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。
格雷编码序列必须以 0 开头。
示例 1:
输入: 2
输出: [0,1,3,2]
解释:
00 - 0
01 - 1
11 - 3
10 - 2
对于给定的 n,其格雷编码序列并不唯一。
例如,[0,2,3,1] 也是一个有效的格雷编码序列。
00 - 0
10 - 2
11 - 3
01 - 1
示例 2:
输入: 0
输出: [0]
解释: 我们定义格雷编码序列必须以 0 开头。
给定编码总位数为 n 的格雷编码序列,其长度为 $2^n$。当 n = 0 时,长度为 $2^0$ = 1。
因此,当 n = 0 时,其格雷编码序列为 [0]。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/gray-code
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思考格雷编码规律,两个连续的数值仅有一个位数的差异。
给定位数n,求格雷编码序列$A_n$,假设我们已经有位数n-1的格雷编码序列$A_{n-1}$,那么在$A_{n-1}$序列所有数字前面加一个0,就变成n位格雷编码,并且满足编码规律,这些数字构成$A_n$的前半部分;在$A_{n-1}$序列所有数字前面加一个1,这半部分也满足规律,但第$|A_{n-1}|/2$和$|A_{n-1}|/2 + 1$的数字差异位数不是1,因此构造后半部分时,需先将$A_{n-1}$倒序,再做处理,就能保证整个$A_n$序列满足编码要求。
AC代码:
1 | class Solution(object): |
144. 二叉树的前序遍历
给定一个二叉树,返回它的前序遍历。
递归很简单;迭代用栈,先访问节点,然后一直找左子树,根节点进栈,左子树遍历完访问右子树。
AC代码:
1 | class Solution { |