import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt(); // 数组长度
int M = scanner.nextInt(); // 右移位数
int[] numbers = new int[N]; // 创建数组
// 读取输入数组
for (int i = 0; i < N; i++) {
numbers[i] = scanner.nextInt();
}
// 调用右移函数
int[] result = rightRotate(numbers, N, M);
// 输出结果
for (int i = 0; i < N; i++) {
System.out.print(result[i]);
if (i != N - 1) {
System.out.print(" ");
}
}
}
// 右移函数
public static int[] rightRotate(int[] arr, int n, int m) {
m = m % n; // 计算实际需要移动的位数
// 将数组分为两部分并进行翻转
reverse(arr, 0, n - m - 1);
reverse(arr, n - m, n - 1);
reverse(arr, 0, n - 1);
return arr;
}
// 辅助函数:反转数组指定范围的元素
public static void reverse(int[] arr, int start, int end) {
while (start < end) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
}
数组元素循环右移问题-Java
最新推荐文章于 2024-07-24 17:27:32 发布
本文介绍了一个Java程序,通过Scanner读取输入数组,使用rightRotate函数将数组向右移动指定位数,涉及数组划分、翻转操作。
摘要由CSDN通过智能技术生成