39.Recover Rotated Sorted Array

2017-07-12  本文已影响0人  博瑜
 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--;
    }
}
 }
上一篇 下一篇

猜你喜欢

热点阅读