我有一个非重叠范围的排序数组,例如(0,2],(2,4),(6,9),我希望得到它的补码(0,12),它会返回(4,6) ],(9,12)。那是最快的方法吗?
答案 0 :(得分:2)
假设您的输入数据是此表单的数组:
{ 0, 2, 2, 4, 6, 9 }
只需将新元素0和12添加到开头和结尾,即可
{ 0, 0, 2, 2, 4, 6, 9, 12 }
将连续对重新解释为间隔,你有:
你有退化间隔这一事实使得这有点混乱,但如果你的原始列表没有任何退化间隔,你的输出列表也不会。
根据您的数据格式以及您是否可以进行就地修改,此操作可能是O(1)
。
答案 1 :(得分:0)
我认为假设 n 为排序数组的大小需要O( n )。 因为你应该检查每个相邻范围之间的差距。
P.S。我想这是你的功课!
答案 2 :(得分:0)