The gray code is a binary numeral system where two successive values differ in only one bit.
Given a non-negative integer n representing the total number of bits in the code, print the sequence of gray code. A gray code sequence must begin with 0.
For example, given n = 2, return [0,1,3,2]. Its gray code sequence is:
00 - 0 01 - 1 11 - 3 10 - 2
Note:
For a given n, a gray code sequence is not uniquely defined.
For example, [0,2,3,1] is also a valid gray code sequence according to the above definition.
For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that.
Subscribe to see which companies asked this question
class Solution {
public:
vector<int> grayCode(int n) {
if(n==0) {
vector<int> ret;
ret.push_back(0);
return ret;
}
vector last=grayCode(n-1);
vector<int> ret(last);
for(int i=(int)ret.size()-1; i>=0; i--) {
ret.push_back(ret[i]+pow(2,n-1));
}
return ret;
};
}
本文介绍了一种递归方法来生成灰码序列。灰码是一种二进制数系统,其中两个连续数值只有一位不同。文中给出的示例展示了当位数为2时的灰码序列,并提供了一个C++实现方案。
339

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



