java - java 获取二维数组中行和列的最大长度

标签 java arrays

在二维中获得最大i(行数)和j(列数)的最佳和有效方法是什么数组?

希望每种情况的时间复杂度都能低于 O(n)。这里没有循环,仍然可以找到最大的j

例如,如果我有一个像这样的数组

[
    [18,18,19,19,20,22,22,24,25,26],
    [1,2,3],
    [0,0,0,0]
]

然后我想在这里得到 i = 3j = 10 作为结果。

有人可以帮助我吗?

最佳答案

您可以避免自己编写循环,但无法避免运行时间至少为 O(n),因为“某人”需要循环源数组。

这是在 Java 8 中实现此目的的一种可能方法:

Arrays.stream(arr).map(row -> row.length).max(Integer::compare).get();

这将返回二维数组中“行”的最大长度:

10

另一个版本避免使用Comparator,因此可能更容易阅读:

Arrays.stream(arr).mapToInt(row -> row.length).max().getAsInt();
<小时/>

arr 应该是您的源数组。

编辑:旧版本使用.max(Integer::max),这是错误的并导致错误的结果。请参阅this answer以获得解释。

关于java - java 获取二维数组中行和列的最大长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34760736/

相关文章:

java - 创建由sh命令执行的java文件

php - 从多个嵌套数组中获取所有组合

php - 如何为 Mandrill API 创建动态数组

java - Apache tomcat,生命周期异常

java - Clojure:如何将 Varargs 扩展为 Java 方法的列表

java - JDBC – create 语句中出现空指针异常

java - 数组 "out of bounds"

javascript - 如何分散数组内部的数组元素?

javascript - 根据条件检查遍历每个对象数组

java - 嵌套类和良好实践