当前位置: 首页 > 知识库问答 >
问题:

Java中的相交重叠区间

柴晔
2023-03-14

我有一组可能重叠的输入日期范围。我想创建具有调整日期的新日期范围,而不是组合这些重叠的日期范围,例如:

|---------------------–|
        |-----| 
            |--------------–|

最终应为:

|-------|---|-|--------|----|

有没有有效的方法用Java解决这个问题?

提前感谢!

更新:在我的第一个问题中,我没有提到我自己的方法,所以它是这样的:我简单地获取间隔的开始和结束日期,并将其添加到一个排序的集合中。之后,我会遍历集合并根据重新排序的日期创建新的间隔。

共有3个答案

沈永新
2023-03-14

要解决此问题,请使用开始日期作为第一个标准,结束日期作为第二个标准来对间隔进行排序。这样,可以在单个迭代中相交间隔。如果您的间隔被另一个很快开始的间隔重叠,则其排序顺序中的后续间隔应为重叠间隔,依此类推。

邢运良
2023-03-14

基本理念:

  • 将每个间隔拆分为起点和终点
  • 对点进行排序
  • 遍历点并在所有相邻点之间创建新的间隔。
    跟踪start Interlives-endInterlives,当这个数字为0时,该范围内不应该有间隔。
龙高歌
2023-03-14

你可以使用番石榴的射程支架。没有将其用于日期对象,但可以使用。结合RangeSet,您可以添加所有日期范围,然后检查日期是否在范围内,获得完整的范围,等等。

 类似资料:
  • 问题内容: 我在Postgres中有下表,在两列和中有重叠的数据。 从前6行可以看到,两列中的数据值4,5,6和7相交/重叠,需要将其划分为一组。第7-16行和第17-18行将分别标记为组2和3。 结果输出应如下所示: 问题答案: 假设所有对在它们的镜像的组合中也存在和。但是以下解决方案也可以在没有镜像重复对象的情况下正常工作。 简单的情况 所有连接都可以 按单个升序排列 ,不可能出现像我在小提琴

  • 我今天刚开始玩SVG,我不知道如何在没有悬停区域重叠问题的情况下使用非矩形形状进行悬停,就像你在我的小提琴中看到的那样。

  • 考虑一个问题来寻找区间图的最小支配集。在区间调度的上下文中,它被转换为以下问题: 存在多个可能相互重叠的间隔。找到区间的最小子集,以便对于未包含在子集中的每个区间,它将在与它重叠的子集中找到至少1个区间。 有一个公认的贪婪解决方案可从互联网上的各种来源,例如康奈尔大学的一个解决方案:http://www.cs.cornell.edu/Courses/cs4820/2011sp/handouts/s

  • 问题内容: 就我而言,每次只想拖一个点。但是,由于两个点严重重叠,因此拖动一个点将导致另一个点被拖动。我如何只拖动上面的点?谢谢! 问题答案: Joe的方法工作正常,但是它使一组可拖动点作为一个类,而不是单个可拖动点类。我只是遇到了一种使用动画blit技术解决上述问题的替代方法。它不仅使拖动更快,更流畅,而且只能拖动一个点。请参阅以下代码。

  • 问题内容: 给定两个字典,我想看看它们的交集和差异,并对与唯一元素相交并执行g的元素执行f函数,这就是我找出d1和d2是两个字典的唯一和相交元素的方法,如何将d_intersection和d_difference作为字典打印在元组中?输出应该看起来像这样({相交的键,值},{差异的键,值}),例如: 输出应为 有人可以告诉我我哪里出了问题,为什么我的代码给出了关键错误4? 问题答案: 尽管可能存在

  • 我在同一个JPanel上有一个JButton和一个Point(由飞跃运动控制的运动)。但是,它们与顶部的JButton重叠。 有没有办法让我的点始终在JPanel应用程序窗口中的顶部? 这是一个代码片段: