Leetcode OJ: 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
[0,1,3,2]
. Its gray code sequence is:00 - 0 01 - 1 11 - 3 10 - 2
这题关键问题是什么是Gray code?
大家百科一下大概就知道什么是Gray code了,再多几个n的样例也能推出通式来,通过数字逻辑那一套。
不过有现成就直接用吧,二进制转Gray code的通式就是G(N) = (B(n)/2) XOR B(n)
代码如下:
1 class Solution { 2 public: 3 vector<int> grayCode(int n) { 4 int size = 1 << n; 5 vector<int> ret; 6 for (int i = 0; i < size; ++i) { 7 ret.push_back((i >> 1) ^ i); 8 } 9 return ret; 10 } 11 };