难!
class Solution {
public:
int getGCD(int a, int b) {
if (a % b == 0) {
return b;
}
return getGCD(b, a % b);
}
void recoverRotatedSortedArray(vector<int> &nums) {
// write your code here
int i = 1;
while(nums[i-1] <= nums[i]){
i++;
}
int temp;
int offset = i;
offset = nums.size()-offset;
int gcd = getGCD(offset,nums.size());
for(int i = 0;i < gcd;i++){
int next = (i+offset)%nums.size();
while(next != i){
temp = nums[i];
nums[i] = nums[next];
nums[next] = temp;
next = (next+offset)%nums.size();
}
}
}
};