通过Swift中的count,从多维数组中找到最大的数组

Pra*_*mar 0 arrays iphone ios swift swift3

我有一个多维数组.它本身可以有多个数组.有时可能是5或6.现在我想通过使用数组大小​​从我的多维数组中获取最大的数组.我不知道如何实现这一目标.因此我在这里张贴.提前致谢.

例如:

[["a","b","c"],["d","e","f","g","h","i","j"]]

Mar*_*n R 9

如果您正在寻找给定数组中最长的子数组,那么您可以使用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"]
Run Code Online (Sandbox Code Playgroud)

在这里,我假设a不是空的,否则max(by:) 将返回nil.如果发生这种情况,请使用可选绑定:

if let longestSubArray = a.max(by: { $0.count < $1.count }) {
    print(longestSubArray)
} else {
    print("a is empty")
}
Run Code Online (Sandbox Code Playgroud)

备注: Array是一个RandomAccessCollection因此得到它count是一个O(1)操作.

如果在包含数组中同时需要最长元素及其索引,则可以将以上内容应用于a.enumerated():

if let (idx, longest) = a.enumerated().max(by: { $0.element.count < $1.element.count }) {
    print("longest subarray", longest)
    print("at index", idx)
}
Run Code Online (Sandbox Code Playgroud)

如果存在多个具有最大长度的子阵列,则上述解决方案将返回其中一个.@dfri的答案显示了如何获得 具有最大长度的所有数组.