您的位置:首页 > 其它

恢复旋转排序数组

2016-03-08 17:22 337 查看
难!

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();
}
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: