在二维中获得最大i
(行数)和j
(列数)的最佳和有效方法是什么数组?
希望每种情况的时间复杂度都能低于 O(n)
。这里没有循环,仍然可以找到最大的j
。
例如,如果我有一个像这样的数组
[
[18,18,19,19,20,22,22,24,25,26],
[1,2,3],
[0,0,0,0]
]
然后我想在这里得到 i = 3
和 j = 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/