class Solution {
public:
vector<int> grayCode(int n) {
vector<int> res;
res.push_back(0);
int head = 1;
for (int i = 0; i < n; i++) {
for (int j = res.size() - 1; j >= 0; j--) {
res.push_back(head + res[j]);
}
head <<= 1;
}
return res;
}
};
第二层for循环的意思是 前四个数跟上一次一样 我们需要再加上四个数 从上一个数组的最后一个数开始 每一个数的第一位加一个1 然后进去 倒序遍历
先上下翻转 再对角线翻转
j=i是对角线 控制对角线左边的元素翻转 就得j<i