从任意非头尾位置开始模拟一个最长的循环即可,每个数字最终都会按照题目中的意思处于一个循环当中。
int reinitializePermutation(int n) {
int x=n/2,ans=1;//任意位置找一个完整循环长度
while(x!=1){
if (x % 2==0) x=x/2;
else x=n/2+(x-1)/2;
ans++;
}
return ans;
}