按最低和最高值连接两个数组

时间:2016-12-22 20:21:02

标签: arrays swift

我需要连接两个数组

let array1 = [2,10,3,11]
let array2 = [10,1,5,8]

结果数组应该是第一个数组中最高值的总和,而第二个数组中最低值的总和,如此 array1:11中的第一个最大值和第二个中的最小值:1。然后我们从第一个和第二个中删除这两个数字,依此类推。按此顺序:

  1. 11 + 1
  2. 10 + 5
  3. 3 + 8
  4. 2 + 10
  5. 结果 - [12,15,11,12]

    我知道如何通过创建临时数组来实现它,但是想知道是否有任何方法可以通过使用map, enumerate之类的函数来完成它。谢谢。

1 个答案:

答案 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()应用于此序列以获取该数组的数组 和。

对阵列进行一次排序比重复定位要快 并删除最大(相应的最小)元素。