一种解决方法是使用动态数组,即在需要调整数组大小时重新创建一个更大或更小的数组,并将原数组的元素复制到新数组中。
下面是一个使用Java语言实现的示例代码:
public class ResizeArray {
private int[] array;
private int size;
public ResizeArray() {
array = new int[10]; // 初始数组大小为10
size = 0; // 初始数组元素个数为0
}
public void add(int value) {
if (size == array.length) {
// 数组已满,需要调整大小
int[] newArray = new int[array.length * 2]; // 创建一个大小为原数组两倍的新数组
for (int i = 0; i < array.length; i++) {
newArray[i] = array[i]; // 将原数组元素复制到新数组中
}
array = newArray; // 将新数组赋值给原数组
}
array[size++] = value; // 在数组末尾添加新元素
}
public void remove() {
if (size == 0) {
throw new RuntimeException("数组为空,无法删除元素");
}
size--; // 删除数组末尾的元素
if (size < array.length / 4) {
// 数组元素个数小于数组长度的四分之一,需要调整大小
int[] newArray = new int[array.length / 2]; // 创建一个大小为原数组四分之一的新数组
for (int i = 0; i < size; i++) {
newArray[i] = array[i]; // 将数组前size个元素复制到新数组中
}
array = newArray; // 将新数组赋值给原数组
}
}
public void print() {
for (int i = 0; i < size; i++) {
System.out.print(array[i] + " ");
}
System.out.println();
}
public static void main(String[] args) {
ResizeArray resizeArray = new ResizeArray();
resizeArray.add(1);
resizeArray.add(2);
resizeArray.add(3);
resizeArray.print(); // 输出:1 2 3
resizeArray.remove();
resizeArray.print(); // 输出:1 2
resizeArray.remove();
resizeArray.remove();
resizeArray.print(); // 输出:
}
}
在上述示例中,ResizeArray
类使用一个动态数组array
来存储元素,并通过size
变量来记录数组中当前的元素个数。当数组已满时,调用add
方法会创建一个大小为原数组两倍的新数组,并将原数组的元素复制到新数组中。当数组元素个数小于数组长度的四分之一时,调用remove
方法会创建一个大小为原数组四分之一的新数组,并将数组前size
个元素复制到新数组中。print
方法用于打印数组中的元素。
在示例的main
方法中,展示了如何使用ResizeArray
类来添加、删除和打印数组中的元素。
上一篇:不断使用的表中删除较旧的记录