对于格雷码,我们假设Gn表示n位的格雷码,只要将Gn每个元素顺序倒置并在前加上1(原来的相当于前面是0),并与Gn拼接
class Solution {
public:
vector<int> grayCode(int n) {
vector<int> ret;
ret.reserve(1 << n);//预留二进制n位
ret.push_back(0);
for (int i = 1; i <= n; i++) {
int m = ret.size();
for (int j = m - 1; j >= 0; j--) {
ret.push_back(ret[j] | (1 << (i - 1)));//倒序,加上1,并且加入ret
}
}
return ret;
}
};