[英]Delete the highest and lowest value of an Array
我正在尝试删除数组int[] ary4 = {2,17,10,9,16,3,9,16,5,1,17,14};
它适用于这个特定的,但是当我改变数字时,它并没有按照我的意图进行。 我知道如何以不同的方式做到这一点,但我想用这种方法解决它。
public static int[] elimAll(int[] a) {
int c = 1;
int g = 1;
int[] b = a.clone();
Arrays.sort(b);
for (int i = 0; i < b.length; i++){
if (i == 0) {
if (b[i] < b[c]) {
b[i] = 0;
c++;
}else{
if (b[i] < b[c] && b[i] < b[i-1]) {
b[i] = 0;
c++;
}
}
}
}
for (int i = 0; i < b.length; i++){
if (i == b.length-1 || i == b.length-2){
if (b[i] >= b[b.length-1] || b[i] >= b[b.length-2]){
b[i] = 0;
g++;
}
}else {
if (b[i] > b[i + 1]) {
b[i] = 0;
g++;
}
}
}
return b;
}
这是一种方法。 它不需要任何排序。
int[] ary4 = {2,17,10,9,16,3,9,16,5,1,17,14};
System.out.println("Before: " + Arrays.toString(ary4));
int[] result = elimAll(ary4);
System.out.println(" After: " + Arrays.toString(result));
印刷品(您可以看到两个 17 和一个单独的 1 被删除)
Before: [2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14]
After: [2, 10, 9, 16, 3, 9, 16, 5, 14]
解释
highest
值和lowest
值。public static int[] elimAll(int[] array) {
int highest = Integer.MIN_VALUE;
int lowest = Integer.MAX_VALUE;
for (int val : array) {
highest = Math.max(highest, val);
lowest = Math.min(lowest,val);
}
int k = 0;
int [] result = new int[array.length];
for(int val : array) {
if (val != highest && val != lowest) {
result[k++] = val;
}
}
return Arrays.copyOf(result, k);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.