将一个具有n个元素的数组向左循环移动i个位置,请给出代码实现,并各处运行结果截图
时间: 2024-09-09 19:04:03 浏览: 40
behaviors-revamp:一年前我在一个项目中运行过的设计问题重述
将一个具有n个元素的数组向左循环移动i个位置通常可以通过以下步骤来实现:
1. 反转整个数组。
2. 反转数组的前i个元素。
3. 反转数组剩余的元素。
下面是一个使用Java语言实现的示例代码:
```java
public class ArrayRotation {
public static void rotateLeft(int[] array, int positions) {
if (array == null || array.length == 0 || positions < 0) {
throw new IllegalArgumentException("Invalid input");
}
positions = positions % array.length; // 防止positions大于数组长度
reverse(array, 0, array.length - 1);
reverse(array, 0, array.length - positions - 1);
reverse(array, array.length - positions, array.length - 1);
}
private static void reverse(int[] array, int start, int end) {
while (start < end) {
int temp = array[start];
array[start] = array[end];
array[end] = temp;
start++;
end--;
}
}
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5, 6, 7};
int positions = 3;
System.out.println("Original array: ");
for (int value : array) {
System.out.print(value + " ");
}
System.out.println();
rotateLeft(array, positions);
System.out.println("Array after left rotation by " + positions + " positions: ");
for (int value : array) {
System.out.print(value + " ");
}
}
}
```
由于作为AI的我无法提供运行结果截图,你需要在本地环境中运行上述代码来验证其功能。运行上述代码后,你会得到以下输出:
```
Original array:
1 2 3 4 5 6 7
Array after left rotation by 3 positions:
4 5 6 7 1 2 3
```
阅读全文