首页 > 解决方案 > 在连续子范围 Swift 中拆分 Int 数组的最佳方法

问题描述

我有一个 Int [0,1,2,5,6,7,11,12,13,14] 数组,我想将它拆分为不同的数组,例如:

array1 = [0,1,2]
array2 = [5,6,7]
array3 = [11,12,13,14]

最好的方法是什么?

标签: arraysswift

解决方案


以下函数比较邻居编号并决定将它们放在哪里。

func sliceInRanges(array: [Int]) -> [[Int]] {
    if array.isEmpty {
        return [[Int]]()
    }
    var slices: [[Int]] = [[]]
    var current: Int = 0

    for number in array {
        // Current slice is empty - first number of main array should be added to slices
        // Or difference from last number in current slice == 1
        if slices[current].isEmpty || number - 1 == slices[current].last!{
            slices[current].append(number)
        } else {
            slices.append([number])
            current += 1
        }
    }

    return slices
}

let array = [0,1,2,5,6,7,11,12,13,14]

print(sliceInRanges(array: array))
// Outputs [[0, 1, 2], [5, 6, 7], [11, 12, 13, 14]]

推荐阅读