Recover Rotated Sorted Array
Written on October 21, 2015
Tweet
Given a rotated sorted array, recover it to sorted array in-place.
public class Solution {
/**
* @param nums: The rotated sorted array
* @return: void
*/
public void recoverRotatedSortedArray(ArrayList<Integer> nums) {
// write your code
int len = nums.size();
int index = 0;
while(index < len-1 && nums.get(index) <= nums.get(index+1)){
//the element can be the same, so <= is important
index++;
}
reverseUtil(nums,0,index);
reverseUtil(nums,index+1,len-1);
reverseUtil(nums,0,len-1);
}
//reverse an arraylist
public void reverseUtil(ArrayList<Integer> nums, int lo, int hi){
if(lo > hi) return;
for(int i = lo; i <= hi; i++){
nums.add(i,nums.remove(hi));
}
}
}