问题陈述
给定n个区间的集合; {[s_1, t_1], [s_2, t_2], ... ,[s_n, t_n]},输出有最大重叠的区间对{[s_i, t_i], [s_j, t_j]}。
输入
n个区间的集合; {[s_1, t_1], [s_2, t_2], ... ,[s_n, t_n]}。
输出
有最大重叠的区间对{[s_i, t_i], [s_j, t_j]}。
例子
对于以下输入区间: {[1, 10], [2, 6], [3,15], [5, 9]},可以形成6种可能的区间组合。其中,[1,10]和[3,15]是具有最大重叠的区间,重叠长度为7。
输出为: {[1,10],[3,15]}。
一个朴素的算法是暴力枚举所有的区间并比较它们之间的重叠程度,同时跟踪当前最大的重叠值。这种情况下的时间复杂度是O(n^2)。
我发现了很多关于“区间树”、“最大重叠区间数”和“最大不重叠区间集”的算法,但没有找到解决这个问题的方法。也许我可以使用上述算法中提供的思路,但是我自己没有想出来。
我花了很多时间试图找到一个好的解决方案,但我认为我需要一些帮助。
任何建议都会有所帮助!
输出为: {[1,10],[3,15]}。
一个朴素的算法是暴力枚举所有的区间并比较它们之间的重叠程度,同时跟踪当前最大的重叠值。这种情况下的时间复杂度是O(n^2)。
我发现了很多关于“区间树”、“最大重叠区间数”和“最大不重叠区间集”的算法,但没有找到解决这个问题的方法。也许我可以使用上述算法中提供的思路,但是我自己没有想出来。
我花了很多时间试图找到一个好的解决方案,但我认为我需要一些帮助。
任何建议都会有所帮助!
O(nlogn)
的时间复杂度内解决。 - Saeid