ios - 在 Swift 中通过计数从多维数组中查找最大数组

标签 ios iphone arrays swift swift3

我有一个多维数组。它本身可以有多个数组。有时可能是 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/

相关文章:

java - isPrime 对于相同的值返回不同的结果?

python - if 函数使用 future 数组

C++ - 结构成员指向数组

javascript - 使用 ajax 加载字典文件,不要让 iPhone Mobile Safari 崩溃

iphone - 当我进入编辑模式时,我可以阻止 UITableViewCell 缩小吗?

iphone - AppDelegate 中的 CoreData(存储新对象)= SIGABRT

ios - 如何从库中获取所有照片

ios - 无法将 NSAttributedString.DocumentAttributeKey 类型的值转换为 .DocumentReadingOptionKey

ios - 如何在 swift 的 map View 上显示位置?我相信我的代码是最新的,但模拟器不显示位置或蓝点?

ios - 无法获取Parse block 中NSLog的来源?