在JAVA中查找两个日期范围的重叠并将其合并为一个日期范围
我们有特定数量日期范围的区块,需要合并每个重叠区块的日期范围,并添加其总数量 考虑以下给定输入和期望输出: 输入: 期望输出:在JAVA中查找两个日期范围的重叠并将其合并为一个日期范围,java,date,Java,Date,我们有特定数量日期范围的区块,需要合并每个重叠区块的日期范围,并添加其总数量 考虑以下给定输入和期望输出: 输入: 期望输出: 请告知是否有java实用程序可以处理这种复杂性。实用程序未知,但您可以使用整数数组计算答案,其中数组索引的数据表示为每天从起点的偏移量,然后迭代每个范围,将范围的值递增到数组的相应索引中,完成后,每个索引表示开始日期的偏移日期,该值是块中范围的累积值。然后,如果希望再次使用范围表示输出,可以单步遍历内容,并基于连续匹配值声明范围的起点和终点 设置开始日期=第一个区块第
请告知是否有java实用程序可以处理这种复杂性。实用程序未知,但您可以使用整数数组计算答案,其中数组索引的数据表示为每天从起点的偏移量,然后迭代每个范围,将范围的值递增到数组的相应索引中,完成后,每个索引表示开始日期的偏移日期,该值是块中范围的累积值。然后,如果希望再次使用范围表示输出,可以单步遍历内容,并基于连续匹配值声明范围的起点和终点
设置开始日期=第一个区块第一次进入的日期
每个街区
对于每个范围
每天的射程
偏移量=范围的日期-开始日期
数组[偏移量]+=范围值
想象一下,将时间线堆叠在一起,然后让它们都投射到一组共同的离散持有者中,这些持有者将每个持有者中的价值落地聚合起来
新范围(开始日期、开始日期)
范围值=数组[0]
对于数组中的每个索引
如果数组[索引]==数组[索引-1]
范围结束=起始日期+索引
其他的
新范围(起始日期+索引,起始日期+索引)
范围值=数组[索引]
不考虑开始时的索引边界或错误陷阱。这可能不是最优雅的解决方案,但它应该能解决您的问题。您尝试过什么?我们是来帮你解决问题的,不是来帮你。尝试添加您的尝试,或者告诉我们您尝试了什么来解决问题。我将使用1+2和+3合并它们,将重叠区域相加。您需要对范围进行排序,然后执行一种类型的合并排序。您可以有一个
SortedMap
,其中Interval
是一对LocalDate
s。请在发布前搜索堆栈溢出。这已经包括在内了。
Block 1 -
14/11/2016 - 17/11/2016 ===> 100
18/11/2016 - 20/11/2016 ===> 200
Block 2 -
15/11/2016 - 16/11/2016 ===> 50
17/11/2016 - 20/11/2016 ===> 300
Block 3 -
15/11/2016 - 18/11/2016 ===> 100
19/11/2016 - 20/11/2016 ===> 400
14/11/2016 ===> 100
15/11/2016 - 16/11/2016 ===> 250
17/11/2016 ===> 500
18/11/2016 ===> 600
19/11/2016 - 20/11/2016 ===> 900