【发布时间】:2022-10-14 21:16:03
【问题描述】:
我有一个关于在数字数组中找到 3 个最小值和 3 个最大值的问题。即使我在数组中正确找到了所有这 3 个最大值,我也无法获得 min3 值。
这是 nums 数组[-100,-98,-1,2,3,4]
min3 通常为 -1,但我得到 4。
我该如何解决?
这是下面显示的代码sn-p。
int max1 = Integer.MIN_VALUE;
int max2 = Integer.MIN_VALUE;
int max3 = Integer.MIN_VALUE;
int min1 = Integer.MAX_VALUE;
int min2 = Integer.MAX_VALUE;
int min3 = Integer.MAX_VALUE;
if(nums.length >= 3) {
for(Integer value : nums) {
int current = value;
// Max
if(current > max1) {
max3 = max2;
max2 = max1;
max1 = current;
}else if(current > max2){
max3 = max2;
max2 = current;
}else {
max3 = current;
}
// min
if(min1 > current) {
min3 = min2;
min2 = min1;
min1 = current;
}
else if(min2 > current) {
min3 = min2;
min2 = current;
}else {
min3 = current;
}
}
System.out.println("max1 : " + max1 + " , max2 : " + max2 + " , max3 : " + max3);
System.out.println("min1 : " + min1 + " , min2 : " + min2 + " , min3 : " + min3);
}
这是如下所示的控制台输出。
max1 : 4 , max2 : 3 , max3 : 2
min1 : -100 , min2 : -98 , min3 : 4
【问题讨论】:
-
nums 中包含什么?
-
你为什么每次都做
max3 = current;?没有if可以对照current检查值。 -
否则 { max3 = 当前;你真的应该检查你是否需要在这里覆盖 max3
-
@f1sh
max3 = current;仅对 else 情况有效。 -
@leonardkraemer 我编辑了我的帖子以显示 nums 数组。