2 回答

TA貢獻1818條經驗 獲得超11個贊
我看到很多代碼本來應該是一個相當簡單的算法;我建議您默認max
而0
不是Integer.MIN_VALUE
使用for-each
循環。比如,for-each
價值v
在nums
;?iff該值是奇數,設置為和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,使用filtering lambda 來獲取奇數值,并使用OptionalInt.orElse(int)來設置默認值。喜歡,
static int maxOdd(int[] nums) {
? ? return IntStream.of(nums).filter(i -> i % 2 == 1).max().orElse(0);
}

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;
}
添加回答
舉報