我有下面的方法来获取二维数组和值。该方法检查值是否在数组中。
我不明白为什么我需要以粗体突出显示的代码行(if (m[i][m[i].length-1] <= val)。
看来代码没有这行代码也可以工作...为什么我仍然需要这行代码,有人可以解释一下吗?谢谢
public static boolean findValWhat (int[][] m, int val)
{
for (int i = 0; i < m.length; i++) {
**if (m[i][m[i].length-1] <= val){**
if (binarySearch(m[i], val) == val){
return true;
}
}
}
return false;
}
最佳答案
没有它,代码仍然可以工作,但运行速度更快。 假设您有这个已排序的二维数组: [[1,2,3],[4,5,6],[7,8,9]] 然后你可以看到,如果你要搜索 8,你不需要对第一行进行二分搜索,因为 3 比 8 小,而且他是其中最大的数字。 您甚至可以通过二分搜索而不是循环来改进此代码。
关于java - 我有下面的方法来获取二维数组和一个值。该方法检查值是否在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42400983/