- 旋转数组
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
先将数组反转,再从0
到 k-1
反转,再从k
到length-1
反转
时间复杂度O(n),空间复杂度O(1)
ACcode:
public class solution189 {
public void rotate(int[] nums, int k) {
k%=nums.length;
reverse(nums,0,nums.length-1);
reverse(nums,0,k-1);
reverse(nums,k,nums.length-1);
}
void reverse(int[] array,int l,int r){
while (l<r){
int temp=array[r];
array[r]=array[l];
array[l]=temp;
l++;
r--;
}
}
}