我有一个实际情况,我需要尽可能减少数据量。
假设我给出了一组正常数字的间隔。 例如N1 = {(0,1),(1,2),(3,4)}; 我想将此设置最小化为: N2 = {(0,2),(3,4)};
基本上我需要的是将多个小间隔组合成连续的间隔,尽可能。
这有什么聪明/有效的算法吗?因为我想避免每次使用效率低下。
*如果此问题有一些众所周知的名称,请在评论中注明。
答案 0 :(得分:2)
将间隔分为起点和终点。
对点进行排序。
让count = 0。
迭代点:
每当遇到终点时:
减少计数。
如果count = 0,请记录此点。
每当遇到起点时。
如果count = 0,请记录此点。
增加点数。
作为技术说明,在排序时,如果起点和终点都具有相同的值,则将起点放在第一位,否则可以将其记录为间隙,而不是连续间隔。
示例:
(0,1],(1,2],(3,4]
Split 0 start, 1 start, 1 end, 2 end, 3 start, 4 end
Count 1 2 1 0 1 0
Record (0 N/A N/A 2] (3 4]
获取录制的值会为我们提供{(0,2], (3,4]}
。