例如:
我们有一个列表:
我们需要检查一个区间(A,B)是否与列表重叠,例如,区间(4,6)与该列表不重叠,而区间(10,12)和区间(5,9)与该列表重叠。我知道我们可以将列表放入HashSet中,然后只需检查范围内的任何元素是否出现在该集合中。这个方法的时间复杂度是O(N),其中N是范围的长度。是否有更好的算法来解决这个问题?我知道有一种称为区间树的数据结构,但我不太理解它。那个数据结构能否以logN的时间复杂度解决这个问题?
1 2 3 7 8 9 11 12
我们需要检查一个区间(A,B)是否与列表重叠,例如,区间(4,6)与该列表不重叠,而区间(10,12)和区间(5,9)与该列表重叠。我知道我们可以将列表放入HashSet中,然后只需检查范围内的任何元素是否出现在该集合中。这个方法的时间复杂度是O(N),其中N是范围的长度。是否有更好的算法来解决这个问题?我知道有一种称为区间树的数据结构,但我不太理解它。那个数据结构能否以logN的时间复杂度解决这个问题?