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

不使用if语句时,如何处理Kadane算法的两类异常返回条件?

问题描述

现有基于Kadane算法的Java代码,需满足两类异常返回条件:

  • 输入数组为空时返回0;
  • 数组所有元素均为负数时返回0。

要求不使用额外if语句处理这些异常情况,请问代码中第一个if()的条件应如何编写?

待修改的Java代码

package src;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;

public class Sum {

    public static int maxSubsequence(int[] arr) {
        int s;
        
        if(){
            for(int i =0;i<arr.length;i++){
                if((arr[i]<0)||(arr.length==0)){
                    s=0;
                }
            }
        } else {
            int max_sum = Integer.MIN_VALUE;
            int end_sum = 0;

            for(int k : arr){
                end_sum = Math.max(end_sum+k, k);
                max_sum = Math.max(end_sum,max_sum);
            }
            s = max_sum;
        }
        return s;
    }
}

解决方案

第一个if()的条件可以编写为:

arr.length == 0 || Arrays.stream(arr).max().getAsInt() < 0

逻辑说明

  1. arr.length == 0直接判断数组为空的场景;
  2. Arrays.stream(arr).max().getAsInt() < 0通过获取数组最大值,若最大值小于0,则证明数组所有元素都是负数;
  3. 用||连接两个条件,只要满足其中一个就进入if分支给s赋值0,否则执行Kadane算法核心逻辑,完全符合要求且无需额外if语句处理异常。

内容的提问来源于stack exchange,提问作者powpow1145

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:30:49