Gray Code
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
For a given n, a gray code sequence is not uniquely defined.
For example,
For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that.
*/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.
class Solution {
public:
int pow(int base, int n){
if(n==0) return 1;
if(n==1) return base;
return base*pow(base, n-1);
}
void getGrayCode(int n, vector<int> & result){
if(n<0) return;
if(n==0) {
result.push_back(0);
return;
}
getGrayCode(n-1, result);
int size = result.size();
int i;
for(i=size-1; i>=0; i--){
result.push_back(result[i]+pow(2,n-1));
}
return;
}
vector<int> grayCode(int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<int> result;
if(n<0) return result;
getGrayCode(n, result);
return result;
}
};
No comments:
Post a Comment