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.
本题是有关格雷码转换的,知道二进制转换为格雷码的转换规则,本题就非常easy了。
class Solution { public: vector<int> grayCode(int n) { vector<int> result; int size=1<<n; //一共可以表示2^n个数 int x=0; while(x<size){ result.push_back(x>>1^x); //转换成对应格雷码 x++; } return result; } };
LeetCode: Gray Code [089],布布扣,bubuko.com
原文地址:http://blog.csdn.net/harryhuang1990/article/details/27801419