【发布时间】:2021-02-24 09:26:40
【问题描述】:
有两个数组,每个数组总是包含一个偶数(虽然不等于)个整数,所以每一对都会形成一个范围,例如。 1..5、8..12等
var defaultArray: [Int] = [1, 5, 8, 12]
var priorityArray: [Int] = [1, 3, 5, 10, 13, 20]
我正在寻找的是一个通用算法,它将找到 priorityArray 的范围与 defaultArray 的范围重叠的每次出现的位置,并将插入 priorityRange 到 defaultArray 中,必要时将 defaultRange 分开。
目标是在保持原始“类型”的同时拥有一个组合范围数组,如下所示:
var result: [Int] = [
1, 3, // priority
3, 5, // default
5, 10, // priority
10, 12, // default
13, 20 // priority
]
我将使用一个简单的结构来说明最终想要的结果:
var result: [Range] = [
Range(from: 1, until: 3, key: "priority"),
Range(from: 3, until: 5, key: "default"),
Range(from: 5, until: 10, key: "priority"),
Range(from: 10, until: 12, key: "default"),
Range(from: 13, until: 20, key: "priority")
]
【问题讨论】:
-
你能举出更多的例子来涵盖所有可能的情况吗?我认为这是非常直接的。
-
也可能存在优先级范围 4..6 介于默认范围 2..10 之间的情况,因此您必须添加 4、4、6、6 的总数[2, 4, 4, 6, 6, 10],但这里的关键是要知道给定范围是组合数组中的优先级还是默认值。
-
默认范围可以相互重叠吗?可以优先级范围吗?
-
我不确定你所说的相互重叠是什么意思。范围是通过在数组中以 2 为增量跨步创建的,因此无论整数本身如何,只要数组包含偶数个条目,就有一个有效范围。或者您可能会问数组是否总是按升序排序?
-
例如 [1,10, 3,12] 是有效的默认范围吗?我在想象一个范围 lo,hi 你的意思是一个 set { x | lo 重叠
标签: arrays algorithm sorting pseudocode