📅  最后修改于: 2023-12-03 15:06:55.770000             🧑  作者: Mango
堆栈是一种数据结构,具有‘先入后出’的特点。用堆栈来反转数组的顺序可以非常便捷的实现。
public static int[] reverseArray(int[] arr) {
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < arr.length; i++) {
stack.push(arr[i]);
}
int[] reversedArr = new int[arr.length];
int index = 0;
while (!stack.isEmpty()) {
reversedArr[index] = stack.pop();
index++;
}
return reversedArr;
}
int[] arr = {1, 2, 3, 4, 5};
int[] reversedArr = reverseArray(arr);
System.out.println(Arrays.toString(reversedArr)); // [5, 4, 3, 2, 1]
时间复杂度:O(n),其中n为数组长度。遍历数组一次需要n的时间,堆栈的入栈和出栈都是O(1)的时间复杂度,所以总的时间复杂度为O(n)。
空间复杂度:O(n),需要一个堆栈对象和一个新的数组对象,所以空间复杂度为2n,即O(n)。
总体来说,使用堆栈反转数组是一种简单、易于理解的方法,时间和空间复杂度也非常优秀。