我有一个多维数组。它本身可以有多个数组。有时可能是 5 或 6。现在我想通过使用数组大小从我的多维数组中获取最大的数组。我不知道如何实现这一目标。因此我在这里发帖。提前致谢。
例如:
[[“a”、“b”、“c”]、[“d”、“e”、“f”、“g”、“h”、“i”、“j”]]
最佳答案
如果你正在寻找给定的最长子数组
array 那么你可以简单地使用 max(by:)
进行比较
使用数组计数:
let a = [["a", "b", "c"], ["d", "e", "f", "g", "h", "i", "j"], ["k"]]
let longestSubArray = a.max(by: { $0.count < $1.count })!
print(longestSubArray)
// ["d", "e", "f", "g", "h", "i", "j"]
这里我假设a
不为空,否则max(by:)
将返回 nil
。如果发生这种情况,请使用可选绑定(bind):
if let longestSubArray = a.max(by: { $0.count < $1.count }) {
print(longestSubArray)
} else {
print("a is empty")
}
备注: Array
是一个 RandomAccessCollection
,因此得到
它的 count
是一个 O(1)
操作。
如果你同时需要最长的元素和它在包含的元素中的索引
array 然后你可以将上面的应用到a.enumerated()
:
if let (idx, longest) = a.enumerated().max(by: { $0.element.count < $1.element.count }) {
print("longest subarray", longest)
print("at index", idx)
}
如果有多个具有最大长度的子数组,则以上 解决方案将返回其中之一。 @dfri's answer显示如何获取所有 具有最大长度的子数组。
关于ios - 在 Swift 中通过计数从多维数组中查找最大数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41777555/