亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果數組中沒有奇數則返回 0

如果數組中沒有奇數則返回 0

湖上湖 2023-10-19 15:02:50
'此方法的目標是返回數組中最大的奇數值。當數組中沒有奇數值時就會出現問題。當沒有奇數值時,我需要返回 0,但我的代碼對于所有測試都返回 0。static int maxOdd(int[] nums) {    int max = Integer.MIN_VALUE;    int sum = 0;    for(int i = 0; i < nums.length; i++){        sum += nums[i];        if(nums[i] % 2 == 1 && nums[i] > max){            max = nums[i];    }        else if(sum % 2 == 0){            max = 0;        }    }    return max;}
查看完整描述

2 回答

?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

我看到很多代碼本來應該是一個相當簡單的算法;我建議您默認max0不是Integer.MIN_VALUE使用for-each循環。比如,for-each價值vnums;?iff該值是奇數,設置為和max的當前值中的最大值。比較所有值后返回。喜歡,maxvmax


static int maxOdd(int[] nums) {

? ? int max = 0;

? ? for (int v : nums) {

? ? ? ? if (v % 2 == 1) {

? ? ? ? ? ? max = Integer.max(max, v);

? ? ? ? }

? ? }

? ? return max;

}

或者,如果使用 Java 8+,您可以使用 獲得相同的結果IntStream,使用filtering lambda 來獲取奇數值,并使用OptionalInt.orElse(int)來設置默認值。喜歡,


static int maxOdd(int[] nums) {

? ? return IntStream.of(nums).filter(i -> i % 2 == 1).max().orElse(0);

}




查看完整回答
反對 回復 2023-10-19
?
森欄

TA貢獻1810條經驗 獲得超5個贊

您可以將 max 的初始值設置為零并刪除 else if 語句


static int maxOdd(int[] nums) {

    int max = 0;

    int sum = 0;

    for(int i = 0; i < nums.length; i++){

        sum += nums[i];

        if(nums[i] % 2 == 1 && nums[i] > max){

            max = nums[i];

        }

    }

    return max;

}


查看完整回答
反對 回復 2023-10-19
  • 2 回答
  • 0 關注
  • 207 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號