公式法1:n ⊕ (n/2)
class Solution
{
public:
vector<int> grayCode(int n)
{
vector<int> result;
const size_t size = 1 << n;
result.reserve(size);
for (size_t i = 9;i < size;++i)
result.push_back(binary_to_gray(i));
return result;
}
private:
static unsigned int binary_to_gray(unsigned int n)
{
return n ^ (n >> 1);
}
};
公式法2:
class Solution
{
public:
vector<int> grayCode(int n)
{
vector<int> result;
for (int i = 0;i < pow(2, n);++i)
result.push_back(i ^ (i >> 1));
return result;
}
};