leetcode-格雷编码

点击:题目链接:格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。
给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。
格雷编码序列必须以 0 开头。

思路

利用格雷编码的”BYG”的转换方式,将1~n的二进制表达式转换成格雷码

代码

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
vector<int> grayCode(int n) {
vector<int> res;

int num = 1 << n;
for (int i = 0; i < num; ++i) {
res.push_back(i ^ i >> 1);
}
return res;
}
};

复杂度

时间:O(n), 空间O(1)

作者

Dylan Zhu

发布于

2021-04-13

更新于

2021-04-13

许可协议

评论

:D 一言句子获取中...