java - 如何编写一个程序来返回Java中整数数组中给定值最后一次出现的索引位置?
问题描述
例如给定一个整数数组:
{1, 2, 3, 1, 4} 和一个整数值 1
该方法将返回 3 作为给定值的最后一个索引位置。如果数组不包含给定值,则该方法应返回 -1。
我的代码:
public int lastIndexOf(int[] values, int value) {
for( int i=0; i< values.length ; i ++ )
if( values[ i ] == value)
return i;
return -1;
}
结果我得到了什么:
org.opentest4j.AssertionFailedError:
Expected :5
Actual :-1
预期结果:
@Test
public void testLastIndexOf() {
assertEquals(5, main.lastIndexOf(new int[]{1, 2, 3, 4, 5, 1}, 1));
assertEquals(-1, main.lastIndexOf(new int[]{2, 3, 3, 2, 4, 5, 4}, 1));
assertEquals(0, main.lastIndexOf(new int[1], 0));
assertEquals(4, main.lastIndexOf(new int[]{0, -1, 1, 8, 8, -1, 6, -2}, 8));
}
解决方案
因为你想要最后一个索引,所以你可能会以相反的顺序读取数组,从头到尾能够在第一次匹配时停止
public int lastIndexOf(int[] values, int value) {
for (int i = values.length - 1; i >= 0; i--) {
if (values[i] == value) {
return i;
}
}
return -1;
}
推荐阅读
- python - Python:将字符串转换为八位字节格式
- php - 如何从 2 个不同的表中选择并插入到 1 个表
- javascript - 为什么 Node.js 只识别绝对路径?
- javascript - 更改标题只保存几秒钟(直到页面停止加载)
- django - 位置参数的 Django Rest API 类型错误
- powershell - 创建由 CPU 负载百分比触发的事件侦听器
- c# - 如何根据表 A 中列 A 的结果更新表 B 中的列 b
- javascript - 如何创建在特定条件下转到某个链接的复选框
- python - 如何检查从 Python 到 Neo4j 的连接
- javascript - 数组一直只填充一个对象