java - 如果其中没有奇数值,则返回 0 的数组
问题描述
'这个方法的目标是返回数组中最大的奇数值。当数组中没有奇数值时,就会出现问题。当没有奇数值时,我需要返回 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
循环。类似的东西,for-each
价值v
; 如果该值是奇数,则设置为 和 的当前值中的最大值。比较所有值后返回。喜欢,nums
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+,您可以使用 an IntStream
, a filter
ing lambda 来获取奇数值,并使用 anOptionalInt.orElse(int)
来设置默认值来获得相同的结果。喜欢,
static int maxOdd(int[] nums) {
return IntStream.of(nums).filter(i -> i % 2 == 1).max().orElse(0);
}
推荐阅读
- ios - 检查用于在 Swift 中编译应用程序的 Xcode/iOS SDK 版本
- assembly - 有关 masm32 库的信息
- xamarin - 是否可以将 Xamarin 项目发布到 VSTS(DevOps)中的私有 nuget 包源
- three.js - 使用正交相机时有没有办法防止剔除一条线?
- java - Maven 运行 testNG 套件两次
- python - 嵌套for循环占用内存,如何优化?
- docker - 使用 openjdk:8 作为基础镜像的 kibana 的 Docker 镜像
- google-app-engine - Google App Engine 上的 Production App 突然无法访问 Google Cloud Storage
- javascript - 更新静态页面中的 Plot ColumnDataSource 列引用
- excel - 如何在两个平行的链式类中组织一组相似的函数