我知道stackoverflow上有类似的问题,但是当没有找到数字时,他们的答案都没有包含返回“-1” .
给定一个数组列表,例如a = [4,3,9,4,6]
输入诸如v = 4之类的值时,我希望Java为我提供与数组中该值相等的最后一个索引 . 所以在这种情况下,Java应该返回索引值3 .
如果数组中没有值,例如v = 2,那么我希望它返回“-1” .
我想出的以下解决方案找到第一个索引并返回它:
public static int lastIndexOf(int[] a, int v) {
int index = 0;
for(int i=0; i<a.length;i++) {
if(a[i]==v) {
index=i;
return index;
}
}
return -1;
}
我有另一个解决方案,找到数组中的最后一个索引,但是当我输入数组中不存在的值时,不会返回“-1” .
public static int lastIndexOf(int[] a, int v) {
int index = 0;
for(int i=0; i<a.length;i++) {
if(a[i]==v) {
index=i;
}
}
return index;
}
我觉得我已接近解决这个问题,但我无法弄清楚如何将这两种解决方案混合在一起 .
2 回答
在第二个解决方案中,只需像这样初始化变量:
还要考虑从右到左遍历数组,这样我们就可以在找到元素后立即停止,它会更高效:
Assing
int index = -1
. 对于更大的循环,从端到端的小优化循环可能要快得多: