我正在寻找一种将几种日期范围转换为其“基本”范围的算法。
此基本级别表示,它具有最少的单独日期范围数。因此,重叠范围或背对背范围应合并为一个范围。
使用两个范围进行比较非常简单:
if (endA >= startB && endB >= startA) > Overlap and merge them
但是,如果mergedAB支持第三个日期范围C ...
A: 2 April - 10 April
B: 5 April - 14 April
C: 15 April - 25 April
D: 28 April - 1 May
这将导致:
2 April - 25 April
28 April - 1 May
有关如何解决此算法的任何指示? 如何确定终止信号的时间,例如何时到达基数?
答案 0 :(得分:0)
如果原始列表可以产生多个范围(样本数据表明),则按开始日期顺序处理原始列表很重要。
第一个元素A成为baseRange,然后将后续元素与 baseRange 合并,而不与先前的元素合并。当if
返回false时,使用范围完成此操作。