douluogu8713 2019-04-08 08:09
浏览 143

确定组合重叠范围的多个日期范围的“基数”

I'm looking for an algorithm to convert several date-ranges to their 'base' ranges.

This base level means, it has the lowest number of seperate date-ranges. So overlapping or back-to-back ranges should be merged to one range.

With two ranges the comparison is fairly simple:

if (endA >= startB && endB >= startA) > Overlap and merge them

But what if the mergedAB backs against a third daterange C...

A: 2 April - 10 April
B: 5 April - 14 April
C: 15 April - 25 April
D: 28 April - 1 May

Then this should result in:

2 April - 25 April
28 April - 1 May

Any pointers on how to tackle this algorithm? How do I determine the end of the itteration, eg when is the base reached??

  • 写回答

1条回答 默认 最新

  • duanlei4759 2019-04-08 12:24
    关注

    If the original list can produce multiple ranges (which the sample data indicates), then it is important to process the original list in start date order.

    The first element, A, becomes the baseRange, then subsequent elements are merged with the baseRange, not with the previous element. It is done with the range when the if returns false.

    评论

报告相同问题?

悬赏问题

  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)