public class Solution {
/**
* @param nums: The rotated sorted array
* @return: void
*/
public void recoverRotatedSortedArray(ArrayList<Integer> nums) {
// write your code
int length = nums.size();
int index = 0;
while (index < length - 1) {
if (nums.get(index) > nums.get(index + 1)) break;
index++;
}
if (index == length - 1) return;
reverse(nums, 0, index);
reverse(nums, index + 1, length - 1);
reverse(nums, 0, length - 1);
}
private void swap(ArrayList<Integer> nums, int start, int end) {
int a = nums.get(start);
nums.set(start, nums.get(end));
nums.set(end, a);
}
private void reverse(ArrayList<Integer> nums, int start, int end) {
while(start < end) {
swap(nums, start, end);
start++;
end--;
}
}
}
网友评论