格雷码公式法(第一个数为0)
Leetcode官解好难懂,先背下来
class Solution {
public:
vector<int> grayCode(int n) {
vector<int> ret(1 << n);
for (int i = 0; i < ret.size(); i++) {
ret[i] = (i >> 1) ^ i ;
}
return ret;
}
};
//作者:LeetCode-Solution
1238.循环码(格雷码拓展,第一个数为start)
将每个格雷码与start异或运算即可
class Solution {
public:
vector<int> circularPermutation(int n, int start) {
vector<int> ret(1 << n);
for (int i = 0; i < ret.size(); i++) {
ret[i] = (i >> 1) ^ i ^ start;
}
return ret;
}
};
//作者:LeetCode-Solution