You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java数组获取3个最小与最大值问题:min3结果异常如何修复?

修复数组中获取3个最小值的逻辑错误

问题原因

你获取三个最小值的逻辑存在漏洞:当当前值既不小于min1也不小于min2时,代码直接将min3赋值为当前值,这会导致后续遍历到较大数值时,覆盖掉之前正确的第三小值。比如遍历到数组最后一个元素4时,由于它不满足小于min1(-100)或min2(-98)的条件,执行else分支把min3从-1改成了4,最终得到错误结果。

修复方案

修改最小值判断的else分支,只有当当前值**小于min3**时,才更新min3。同时对最大值逻辑做了优化,避免不必要的赋值(原最大值逻辑虽在测试数组中生效,但存在逻辑瑕疵)。

修复后的完整代码:

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 if(current > max3) {
            max3 = current;
        }
                
        // 修复后的min逻辑
        if(current < min1) {
            min3 = min2;
            min2 = min1;
            min1 = current;
        } else if(current < min2) {
            min3 = min2;
            min2 = current; 
        } else if(current < min3) {
            min3 = current; 
        }
                
    }
            
    System.out.println("max1 : " + max1 + " , max2 : " + max2 + " , max3 : " + max3);
    System.out.println("min1 : " + min1 + " , min2 : " + min2 + " , min3 : " + min3);
                
}

验证结果

运行修复后的代码,输入数组[-100,-98,-1,2,3,4],控制台输出将变为:

max1 : 4 , max2 : 3 , max3 : 2
min1 : -100 , min2 : -98 , min3 : -1

完全符合预期结果。

内容的提问来源于stack exchange,提问作者Sercan Noyan Germiyanoğlu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:35:26