我有一个多维数组.它本身可以有多个数组.有时可能是5或6.现在我想通过使用数组大小从我的多维数组中获取最大的数组.我不知道如何实现这一目标.因此我在这里张贴.提前致谢.
例如:
[["a","b","c"],["d","e","f","g","h","i","j"]]
如果您正在寻找给定数组中最长的子数组,那么您可以使用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
.如果发生这种情况,请使用可选绑定:
if let longestSubArray = a.max(by: { $0.count < $1.count }) { print(longestSubArray) } else { print("a is empty") }
备注: 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) }
如果存在多个具有最大长度的子阵列,则上述解决方案将返回其中一个.@dfri的答案显示了如何获得 具有最大长度的所有子数组.