格雷码的规律,比如n=3时
000
001
011
010
110
111
101
100
规律是 将格雷码看成是上下两部分 n=1
上 0 下 1
n=2
上为n=1时的格雷码
下为n=1时的格雷码的倒序再加上最前面的1
class Solution {
public:// 除去最高位 对称
vector<int> grayCode(int n) {
vector<int> res;
int highest=1;
res.push_back(0);
for(int i=0;i<n;++i){
highest=1<<i;
int len=res.size();
for(int j=len-1;j>=0;--j){
res.push_back(highest+res[j]);
}
}
return res;
}
};