2 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
我看到很多代碼本來應(yīng)該是一個(gè)相當(dāng)簡(jiǎn)單的算法;我建議您默認(rèn)max
而0
不是Integer.MIN_VALUE
使用for-each
循環(huán)。比如,for-each
價(jià)值v
在nums
;?iff該值是奇數(shù),設(shè)置為和max
的當(dāng)前值中的最大值。比較所有值后返回。喜歡,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+,您可以使用 獲得相同的結(jié)果IntStream,使用filtering lambda 來獲取奇數(shù)值,并使用OptionalInt.orElse(int)來設(shè)置默認(rèn)值。喜歡,
static int maxOdd(int[] nums) {
? ? return IntStream.of(nums).filter(i -> i % 2 == 1).max().orElse(0);
}

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以將 max 的初始值設(shè)置為零并刪除 else if 語(yǔ)句
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;
}
添加回答
舉報(bào)