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;
}
添加回答
举报