簡體   English   中英

如果其中沒有奇數值,則返回 0 的數組

[英]Array that returns 0 if there are no odd values in it

'這個方法的目標是返回數組中最大的奇數值。 當數組中沒有奇數值時,就會出現問題。 當沒有奇數值時,我需要返回 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;
}

我看到很多代碼應該是一個相當簡單的算法; 我建議您默認max0而不是Integer.MIN_VALUE並使用for-each循環 類似,對於nums for-eachv 如果值是奇數,則將max設置為maxv的當前值中的最大值。 比較所有值后返回max 喜歡,

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獲得相同的結果, filter lambda 以獲得奇數值,並使用OptionalInt.orElse(int)設置默認值 喜歡,

static int maxOdd(int[] nums) {
    return IntStream.of(nums).filter(i -> i % 2 == 1).max().orElse(0);
}

您可以只設置最大零的初始值並刪除 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM