题目描述
点这里
思路分析
规律+模拟。
格雷码生成的一种规律:上一种格雷码序列水平翻转复制,然后上半部分最后补0,下半部分最后补1即可。有这个规律以后就是模拟了。
代码实现
class Solution {
public:
vector<int> grayCode(int n) {
vector<int> ans(1,0);
while(n--){
for(int i=ans.size()-1;i>=0;i--){
ans[i]*=2;
ans.push_back(ans[i]+1);
}
}
return ans;
}
};