当n=1时,为[0,1]
当n=2时,为[00,01,11,10]
当n=3时,为[000,001,011,010,110,111,101,100]
由此可以看出新的序列其实是在前面序列基础上插入新的值
其中前半部分的数值不变,后半部分的数值为上个序列中每个元素第n个位变1,逆向插入
class Solution {
public:
vector<int> grayCode(int n) {
vector<int>result;
result.push_back(0);
for(int i=0;i<n;i++)
{
int flag=1<<i;
for(int i=result.size()-1;i>=0;i--)
result.push_back(result[i]|flag);//反序每个数字左边变添加1
}
return result;
}
};