使用Java查找数组中3的最后倍数
编写一个方法,返回数组中最后一个值的索引,该值是3的倍数
例如,在数组中
[4,7,9,7,12] 三者的最后一个倍数是'12',出现在指数4处
这是到目前为止我的代码。有人能帮我修改代码吗
public int findMultipleOfThree(int[] arr)
{
int result = 0;
for (int i = arr.length-1; i > 0; i--)
{
if(i%3==0)
{
result = arr[i];
}
}
return result;
}
我知道这远远不是正确的答案。请帮忙
# 1 楼答案
最新情况:
输出:
# 2 楼答案
几乎没关系,你应该在这行后面加一个空格:
改变这一点:
为此:
因此,你一定会找到最后一个。此外,您的i应该从arr.length-1变为i>=0,因为列表从0开始
# 3 楼答案
您的解决方案几乎可以正常工作!你需要增加休息时间,但我看到其他人已经注意到了这一点。下面是另一个简单的方法(并不总是最有效的)强> 遍历整个数组并检查当前元素是否为3的倍数。将最大索引存储在变量中,并在每次发现较大值时更新。返回arr[最大索引]。代码应该是这样的,希望我能帮助你
# 4 楼答案
只需反向遍历这些值,并在找到倍数后立即返回。如果未找到任何内容且循环已完成,则返回
-1
。此外,您可以修改方法签名以传入任何多个值,例如3
如果您定位的是一个值,而不是一个索引,那么您会返回什么?您应该将
int
框成一个Integer
并返回null
,如果没有任何值是倍数。如果决定对数组进行流式筛选,还可以返回一个Optional<Integer>
# 5 楼答案
问题
您已经为比较和结果切换了元素,您需要
if (arr[i] % 3 == 0)
result = i
解决方案
最佳:您可以从头开始,返回第一个匹配项,然后进行最小迭代
您可以从头开始,重写
result
以返回最后一个注
我还建议使用
-1
,因为它是一个未验证的索引,它表明您没有找到任何与条件匹配的值