public static void main(String[] args) {
int[] arr = new int[30];
for (int i = 0; i < arr.length; i++) {
arr[i] = i + 1;
}
long start = System.currentTimeMillis();
remove(arr, 10);
long end = System.currentTimeMillis();
System.out.println(end - start);
print(arr);
}
/**
* @Description
* @param arr 123456789
* @param k 3
* @return void
**/
public static void remove(int[] arr, int k) {
if (k < 0 || k > arr.length) {
return;
}
//逆转 0~N-1 : 987654321
reverse(arr, 0, arr.length - 1);
//逆转 0~(N-K)-1 : 456789321
reverse(arr, 0, (arr.length - k) - 1);
//逆转 (N-K)~N-1 : 456789123
reverse(arr, (arr.length - k), arr.length - 1);
}
/**
* @Description 逆转
* @param arr
* @param start 起始索引
* @param end 结束索引
* @return void
**/
public static void reverse(int[] arr, int start, int end) {
while (start < end) {
arr[start] = arr[start] ^ arr[end];
arr[end] = arr[start] ^ arr[end];
arr[start] = arr[start] ^ arr[end];
start++;
end--;
}
}
public static void print(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}```
数组移位:k个数移到后面
最新推荐文章于 2023-08-25 00:07:19 发布