Recover Rotated Sorted Array
题目:
Given a rotated sorted array, recover it to sorted array in-place.
Example
[4, 5, 1, 2, 3]
->[1, 2, 3, 4, 5]
分析:
三步翻转法可以实现rotated
1.recover rotated sorted array
45 123 找到这个位置没必要二分,直接N过来· ->54 321-> 123 45
解法:
public void recoverRotatedSortedArray(List<Integer> nums) {
int pos = -1;
for(int i = 0; i < nums.size()-1; i++){
if(nums.get(i) > nums.get(i+1)){
pos = i;
break;
}
}
reverse(nums, 0, pos);
reverse(nums, pos+1, nums.size()-1);
reverse(nums, 0, nums.size()-1);
}
public void reverse(List<Integer> nums, int start, int end){
while(start < end){
int temp = nums.get(start);
nums.set(start++, nums.get(end));// arraylist set用法
nums.set(end--, temp);
}
}
Last updated
Was this helpful?