解题思路:
(1)首先计算出格雷码
(2)找到start的值,通过三次翻转,将其调到首部
class Solution {
public:
vector<int> circularPermutation(int n, int start) {
vector<int> v;
for(int i=0;i<pow(2,n);i++) {
v.push_back(i^(i>>1));
}
int index = find(v.begin(),v.end(),start)-v.begin();
reverse(v.begin(),v.begin()+index);
reverse(v.begin()+index,v.end());
reverse(v.begin(),v.end());
return v;
}
};