java - 我有下面的方法来获取二维数组和一个值。该方法检查值是否在数组中

标签 java arrays binary-search

我有下面的方法来获取二维数组和值。该方法检查值是否在数组中。

我不明白为什么我需要以粗体突出显示的代码行(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/

相关文章:

python - numpy累积乘积: normalizing result after each prod operation along axis

java - 使用后缀数组搜索后缀

algorithm - 使用数组在 C++ 中进行二进制搜索

java - 二叉搜索树

java - Esper XML dom 文档错误

java - 导入的挑战 - import org.knowm.xchart.*

java - Postgresql 过程未从 JDBC 调用

java - java中删除数组中的元素

java - 数组不断将列表循环中的相同值添加到所有索引

c - 如何访问结构数组中的元素(非全局)