📜  从 Array 中删除最大值和最小值所需的从前面或后面的最小删除(1)

📅  最后修改于: 2023-12-03 15:36:12.932000             🧑  作者: Mango

从 Array 中删除最大值和最小值所需的从前面或后面的最小删除

在处理一个数组时,有时需要删除数组中的最大值和最小值,同时需要知道删除最大值和最小值所需的从前面或后面的最小删除次数。这个问题可以通过以下步骤解决:

1. 找到最大值和最小值

首先需要找到数组中的最大值和最小值。可以使用以下代码:

int[] array = {5, 3, 7, 2, 8, 4};
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
for(int i=0; i<array.length; i++){
    if(array[i] > max){
        max = array[i];
    }
    if(array[i] < min){
        min = array[i];
    }
}
System.out.println("Max value: " + max);
System.out.println("Min value: " + min);
2. 找到删除最大值和最小值所需的删除次数

接下来需要找到从前面或后面删除数组元素的最小删除次数。可以分别计算删除最大值和最小值所需的删除次数,然后取其中较小的值。

2.1 删除最大值所需的删除次数

要从数组中删除最大值,可以使用以下代码:

int[] newArray = new int[array.length-1];
int index = 0;
for(int i=0; i<array.length; i++){
    if(array[i] != max){
        newArray[index++] = array[i];
    }
}

这将创建一个新数组 newArray 来存放删除最大值后的数组元素。可以看出,删除最大值需要遍历整个数组,需要删除 array.length-1 个元素。此时,删除方式只能从后面开始删除,因为删除前面的元素会使数组中的元素位置发生变化,从而影响到后面的删除操作次数。因此,要从后面开始删除,需要删除 array.length-2 次。所以,删除最大值所需的删除次数为 array.length-2

2.2 删除最小值所需的删除次数

删除最小值的方式和删除最大值的方式类似,也需要从后面开始删除。可以使用以下代码:

newArray = new int[array.length-1];
index = 0;
for(int i=0; i<array.length; i++){
    if(array[i] != min){
        newArray[index++] = array[i];
    }
}

删除最小值需要删除 array.length-1 个元素,从后面开始删除需要删除 array.length-2 次。因此,删除最小值所需的删除次数也是 array.length-2

2.3 找到删除最大值和最小值所需的删除次数的较小值

删除最大值和最小值所需的删除次数都是 array.length-2。因此,从前面删除和从后面删除都是一样的,不需要区分。最小删除次数为 array.length-2

int minDeleteCount = array.length-2;
System.out.println("Minimum delete count: " + minDeleteCount);
3. 总结

通过以上步骤,就可以找到从数组中删除最大值和最小值所需的从前面或后面的最小删除次数。在实际应用中,可以根据这个删除次数来选择删除方式,以提高程序的效率。

以上内容已按 markdown 格式返回,其中涵盖了找到最大值和最小值、删除最大值和最小值所需的删除次数、从前面或后面删除的过程和结果。