Rob*_*bin 10 algorithm merge stream
我们给出了连续的整数范围流,如[1,3],[5,10],[2,6],...当每个新范围到来时,我们需要检查现有范围并查看它是否与任何现有范围,如果发现任何重叠,则删除所有重叠范围,并插入合并范围.我们需要一种有效的算法.请注意,范围一次一个,形成一个流......
在接受采访时被问到这个问题.想法?
目的是将重叠范围合并为一个.例如,如果我们有3个范围按以下顺序排列:[1,3],[2,6],[5,10].然后我们首先将前两个合并为[1,6],然后与第三个合并,它变为[1,10].
biz*_*lop -1
当一个新的元组进入时,在现有的结束元素列表中(newstart,newend)执行二分搜索 fon ,并且在现有的开始元素列表中执行类似的 for 。newstart-1newend+1
与任何匹配范围合并。
如果没有范围匹配,则在两个最接近的范围之间插入。
更新:从头开始,我正在解决错误的问题:合并接触范围。但重叠范围解决方案不会太不同。
start(n) <= newstartend(n) >= newstartnewstart为start(n)start(m) <= newendend(m) >= newendnewend为end(m)(newstart,newend)组。| 归档时间: |
|
| 查看次数: |
3278 次 |
| 最近记录: |