题目
- 格雷编码
题目大意
样例
数据规模
思路
通过题意可以知道格雷码的定义,而通过资料可以想到最简单的构造方法:
那么一开始就先存储(0,1)(这是n=1的情况),接下来每次将之前的所有格雷码倒序加到数组末尾并且叠加上 2 k − 1 ( k 表 示 当 前 第 几 位 ) 2^{k-1}(k表示当前第几位) 2k−1(k表示当前第几位) ,这样做n-1轮就是最终要的格雷码。
代码
class Solution {
public:
vector<int> grayCode(int n) {
vector<int>ans;
ans.push_back(0);
ans.push_back(1);
int t=1;
for(int i=2;i<=n;i++){
int tot=ans.size();
t*=2;
for(int j=tot-1;j>=0;j--){
ans.push_back(t+ans[j]);
}
}
return ans;
}
};