比较一个阵列与另一个阵列时如何找到所有单个自由位置?

时间:2016-10-01 18:13:49

标签: arrays swift

我创建了两个CGPoint类型的数组(allPosselectedPos)。一个包含另一个。请在下面查看它们的示例:

allPos = [point1,..., point10]
selectedPos = [point1, point4, point6, point7, point9, point10]

所有点都有相同的y坐标,我将它们从最小到最大排列。

allPos相比,我怎样才能找到selectedPos只有一个自由连续位置或只有一个自由位置的位置数组? 从我上面的例子中可以看出

[point5, point8]

2 个答案:

答案 0 :(得分:0)

您需要的只是selectedPos数组,只需在每个点后查看以下位置,看看是否(仅)有一个空位或(仅)3并将其保存到新数组中。

答案 1 :(得分:0)

我为你创建了一个simle示例,展示了如何找到缺少的元素的位置。

let first = [1,2,6,8,9,10]
let second = [1,2,3,4,5,6,7,8,9,10]

func fetchIndexesWithoutConsecutive(firstArray: [Int], secondArray: [Int]) -> [Int] {
    //Output array
    var array = [Int]()

    //Enumerate second array and compare if first array conteins this elments if not we add postion of the missing item
    for (index, value) in secondArray.enumerate() {
        if (!firstArray.contains(value)) {
            array.append(index)
        }
    }

    guard array.count > 1 else {
        return array
    }

    var result = [Int]()

    for i in 0...array.count-2 {
        let first = array[i]
        let second = array[i+1]
        if second - first > 1 {
            result.append(second)
        }
    }

    return result // [6] position of the elements in second array that are not in first array without consecutive
}

fetchIndexesWithoutConsecutive(first, secondArray: second)