我需要连接两个数组
let array1 = [2,10,3,11]
let array2 = [10,1,5,8]
结果数组应该是第一个数组中最高值的总和,而第二个数组中最低值的总和,如此 array1:11中的第一个最大值和第二个中的最小值:1。然后我们从第一个和第二个中删除这两个数字,依此类推。按此顺序:
结果 - [12,15,11,12]
我知道如何通过创建临时数组来实现它,但是想知道是否有任何方法可以通过使用map, enumerate
之类的函数来完成它。谢谢。
答案 0 :(得分:9)
对数组进行排序(按递减顺序递增顺序),压缩它们,然后添加:
let array1 = [2,10,3,11]
let array2 = [10,1,5,8]
let result = zip(array1.sorted(by: >), array2.sorted()).map(+)
print(result) // [12, 15, 11, 12]
zip()
返回两个(已排序)数组中的一对对。
然后将map()
应用于此序列以获取该数组的数组
和。
对阵列进行一次排序比重复定位要快 并删除最大(相应的最小)元素。