arrays - 在连续子范围 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]
最好的方法是什么?
解决方案
以下函数比较邻居编号并决定将它们放在哪里。
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]]
推荐阅读
- c++ - 如何调用存储在数组中的数组的值
- javascript - 赛普拉斯测试:如何比较 AJAX 调用前后的元素数量
- c++ - 如何使用 DirectX 11 渲染多个网格
- swift - 使用 ARKit 在 AR 中放置的 3D 对象中存储“标题”等数据
- java - 使用 Netty 限制 HTTP/2 中的流读取
- python - 使用 python 客户端从 yaml 创建 Kubernetes CronJob
- c# - 如何使用循环更改名称相似的内部类?
- ssl - 努力在 Apache CXF、Java 8、No Spring 中启用 SSLv2Hello
- unity-container - 如何创建多个不同的外壳
- php - 语句 [$var1, $var2] = someMethod(); 的 PHP 语法是什么?