ios - 整数数组到范围数组

标签 ios arrays swift algorithm sorting

我的任务: 我需要将 Array 分成几个具有以下属性的 Arrays of Arrays:

  1. 每个子数组都是一个范围内的连续整数。例如 [1,2,3,4,5] 将是 [[1,5]]

  2. 当没有连续的整数时创建一个新的子数组。例如 [1,2,4,5] 将是 [[1,2], [4,5]]

示例:

如果我有这个整数数组 - [0, 1, 5, 6, 3, 7]

预期结果 - [[0, 1], [3], [5, 7]]

我已经试过了:

let array: [Int] = [0, 1, 3, 4, 5, 6, 7]

var group: [[Int]] = []
var temp: [Int] = [Int]()

for (index, element) in array.enumerated() {
    if index + 1 < array.count {
        let nextElement = array[index + 1]
        let step = nextElement - element

//        temp.append(element)

        if(step) == 1 { // Until it's in range
            temp.append(element)
        } else { // One-by-one
            temp.append(element)
            group.append(temp)

            temp = [Int]()
            group.append([nextElement])
        }
    } else {
        print(index)
    }
}

print(group)

从我的代码中,我得到了这个结果 - [[0, 1], [3]]

最佳答案

有一个 API,IndexSet :

不清楚你想要什么,你的例子含糊不清。

如果你想要一个范围数组

let indexSet = IndexSet(array)
let rangeView = indexSet.rangeView
let group = rangeView.map { $0.indices.startIndex..<$0.indices.endIndex }

如果你想要一个按范围分组的数组

let indexSet = IndexSet(array)
let rangeView = indexSet.rangeView
let group = rangeView.map { Array($0.indices) }

关于ios - 整数数组到范围数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56399048/

相关文章:

c# - 开发环境设置 - 使用 C# Web 服务和 MS SQLServer 的 iphone iOS

ios - quickblox 为开发和生产制作相同的 token

c# - C# 中未知长度的数组

c# - 从 Animal[] 转换为 Dog[] 的最佳方式

ios - 快速从 Url 获取图像名称

ios - 在 Swift 中子类化 UIView - 错误

ios - 如何将文件从目录复制到iphone文档目录

php - 将图像从iOS上传到PHP脚本

ios - 将多个数组相加形成一个最终数组。调试问题,Swift Xcode

ios - 尝试确保方法检查 Swift 中的字母和连字符