Java实现-恢复旋转排序数组,给定一个旋转排序数组,在原地恢复其排序。
您在真实的面试中是否遇到过这个题? Yes 说明什么是旋转数组?
[4, 5, 1, 2, 3]->
[1, 2, 3, 4, 5]
挑战
使用O(1)的额外空间和O(n)时间复杂度
public class Solution {
/**
* @param nums: The rotated sorted array
* @return: void
*/
public void recoverRotatedSortedArray(ArrayList nums) {
// write your code
int index=0;
int min=Integer.MAX_VALUE;
for(int i=0;inums.get(i)){
index=i;
min=nums.get(i);
}
}
reverse(nums, 0, index);
reverse(nums, index, nums.size());
reverse(nums, 0, nums.size());
}
private static void reverse(ArrayList nums,int from,int to){
for(int i=from;i<(from+to)/2;i++){
int left=nums.get(i);
int right=nums.get(to-i+from-1);
nums.set(i, right);
nums.set(to-i+from-1, left);
}
}
}