题目
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 - 2Note:
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.
题解
int* grayCode(int n, int* returnSize) {
int *r=(int *)malloc(sizeof(int)*(1<<n));
int temp;
*returnSize=(1<<n);
r[0]=0;
for (int i=0;i<n;i++)
{
temp=1<<i;
for (int j=0;j<temp;j++)
{
r[j+temp]=temp+r[temp-1-j];
}
}
return r;
}
class Solution {
public:
vector<int> grayCode(int n) {
int temp=0;
vector<int> r;
for (int i=0;i<(1<<n);i++)
r.push_back(0);
for (int i=0;i<n;i++)
{
temp=1<<i;
for (int j=0;j<temp;j++)
{
r[j+temp]=temp+r[temp-1-j];
}
}
return r;
}
};
class Solution:
# @param {integer} n
# @return {integer[]}
def grayCode(self, n):
r = range(1<<n)
temp = 0
for i in range(n):
temp = 1<<i
for j in range(temp):
r[j+temp]=temp+r[temp-1-j]
return r