查找数组中的第一个、最后一个和中间值。返回最大的一个

神崎咏叹调回声

Java 新手来了。我正在练习数组问题,我遇到了这个问题:给定一个奇数长度的整数数组,查看数组中的第一个、最后一个和中间值并返回最大的值。数组长度至少为 1。

我知道如何在数组中找到第一个、最后一个和中间值。然后我尝试使用 if 语句来解决这个问题。

我的代码:

public int maxTriple(int[] nums) {
    if(nums[0]>nums[(nums.length+1)/2-1]&&nums[0]>nums[nums.length-1]){
       return nums[0];
   }else if(nums[(nums.length+1)/2-1>]>nums[0]&&nums[(nums.length+1)/2-1>]>
            nums[nums.length-1]){
       return nums[nums.length-1];
   }else{
       return nums[nums.length-1];
 }
}

但是这段代码根本不起作用我该如何修复我的代码?

安德烈亚斯

首先,为了使代码更具可读性/可理解性,您应该将感兴趣的 3 个值分配给局部变量,并且应该在运算符周围添加一些空格。

此外,由于您知道长度将是奇数,length / 2因此足以找到中间值:

int first  = nums[0];
int middle = nums[nums.length / 2];
int last   = nums[nums.length - 1];

当你的if块以一个return语句结束时else它就变得多余了,尽管这是一个风格问题。在这种情况下,它几乎没有什么区别,但在更复杂的代码中,它会对代码复杂性产生很大的影响。

当然,正如PM 77-1 指出的那样,您的主要问题是

你知道你回来了nums[nums.length-1] 两次吗?

中间的return语句返回了错误的值:

if (first > middle && first > last) {
    return first;
}
if (middle > first && middle > last) {
    return middle;
}
return last;

您可以使用三元条件运算符将其写在单个语句中:

return (first > middle && first > last ? first :
        middle > first && middle > last ? middle : last);

您可以使用该Math.max()方法来简化它:

return Math.max(Math.max(first, middle), last);

或者您可以使用IntStream.max(),如果您有很多值,这会更好:

return IntStream.of(first, middle, last).max().getAsInt();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

返回数组中的第一个和最后一个值

在Fortran数组中查找第一个和最后一个正值

查找大于阈值的NumPy数组的第一个和最后一个元素

查找数组的第一个和最后一个结构

在一行中查找具有特定值的第一个和最后一个条目

从数组数组中查找每天的第一个和最后一个时间戳

在R中查找条纹的第一个和最后一个日期

从数组获取第一个和最后一个值

提取json数组/对象的第一个和最后一个值

在列中查找第一个和最后一个值,然后获取其旁边的值

在数组php中查找第一个和最后一个匹配序列

Elasticsearch聚合中第一个和最后一个文档的返回字段

删除数组中的第一个/最后一个值

在不是NaN的列中查找第一个和/或最后一个值的索引

在Python列表中查找某个值的第一个和最后一个索引

删除数组中的第一个和最后一个元素

从解析的数组中获取第一个和最后一个日期

NumPy数组中的第一个和最后一个元素

忽略数组中的第一个和最后一个数字

熊猫从组中获取列的第一个和最后一个值

获取groupby中的第一个和最后一个值

删除组中的第一个和最后一个观测值

PostgreSQL中window函数的第一个和最后一个值

使用RLE从组中获取第一个和最后一个值

将数组中的第一个和最后一个值分组(连续的值与第一个和最后一个元素分组)

Excel:使用值查找第一个和最后一个单元格的地址(中间有空格)

javascript:从函数数组中查找第一个真实的返回值

在数组中查找字符串并返回列的第一个值

按组查找第一个/最后一个观察值?