题目:searchMatrix
要求:
给定一个旋转排序数组,在原地恢复其排序。
什么是旋转数组?
比如,原始数组为[1,2,3,4], 则其旋转数组可以是[1,2,3,4], [2,3,4,1], [3,4,1,2], [4,1,2,3]
样例:
[4, 5, 1, 2, 3] -> [1, 2, 3, 4, 5]
算法要求:
使用O(1)的额外空间和O(n)时间复杂度
解题思路:
循环将头部放到后面,知道遇到比下一个值比当前值小的时候停止。
算法如下:
void recoverRotatedSortedArray(vector<int> &nums) {
// write your code here
int size = nums.size();
for (int i = 1; i < size; i++) {
int temp = nums[0];
if (temp > nums[1]) {
break;
}
nums.erase(nums.begin());
nums.push_back(temp);
}
int temp = nums[0];
nums.erase(nums.begin());
nums.push_back(temp);
}