给定一个旋转排序数组,在原地恢复其排序。
您在真实的面试中是否遇到过这个题?[4, 5, 1, 2, 3]
-> [1, 2, 3, 4, 5]
使用O(1)的额外空间和O(n)时间复杂度
什么是旋转数组?
- 比如,原始数组为[1,2,3,4], 则其旋转数组可以是[1,2,3,4], [2,3,4,1], [3,4,1,2], [4,1,2,3]
相关题目 Expand
public class Solution {
/**
* @param nums: The rotated sorted array
* @return: void
*/
public void recoverRotatedSortedArray(ArrayList<Integer> nums) {
// write your
int min = nums.get(0);
int s = 0;
for(int i=0;i<nums.size();i++){
if(nums.get(i)<min){
min = nums.get(i);
s = i;
}
}
for(int i=0;i<nums.size()-s;i++){
int tmp = nums.get((i+s)%nums.size());
nums.remove((i+s)%nums.size());
nums.add(i, tmp);
}
}
}