[英]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;
}
我看到很多代碼應該是一個相當簡單的算法; 我建議您默認max
為0
而不是Integer.MIN_VALUE
並使用for-each
循環。 類似,對於nums
for-each
值v
; 如果值是奇數,則將max
設置為max
和v
的當前值中的最大值。 比較所有值后返回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.