java判断多个数字区间是否有交集
时间: 2023-10-21 15:33:42 浏览: 87
可以使用两个数组分别存储每个数字区间的起始值和结束值,然后对每个数字区间进行比较,判断是否有交集。具体实现可以使用双重循环,时间复杂度为O(n^2)。也可以使用排序和二分查找的方法,将数字区间按照起始值排序,然后对于每个数字区间,在已排序的数字区间中二分查找是否有交集,时间复杂度为O(nlogn)。
相关问题
java判断多个数字区间是否有交集,给出代码示例
可以使用两个数组分别存储每个区间的起始点和终止点,然后按照起始点的大小进行排序,依次比较相邻两个区间是否有交集。
代码示例:
```java
public static boolean hasIntersection(int[] starts, int[] ends) {
int n = starts.length;
if (n <= 1) {
return false;
}
int[][] intervals = new int[n][2];
for (int i = 0; i < n; i++) {
intervals[i][0] = starts[i];
intervals[i][1] = ends[i];
}
Arrays.sort(intervals, Comparator.comparingInt(o -> o[0]));
for (int i = 1; i < n; i++) {
if (intervals[i][0] <= intervals[i - 1][1]) {
return true;
}
}
return false;
}
```
当然,这只是一种简单的实现方式,还有其他更高效的算法可以解决这个问题。
java判断数字区间是否有交集
可以使用以下代码实现:
```java
public static boolean isOverlap(int start1, int end1, int start2, int end2) {
return Math.max(start1, start2) <= Math.min(end1, end2);
}
```
其中,start1和end1表示第一个区间的起始和结束位置,start2和end2表示第二个区间的起始和结束位置。如果有交集,返回true,否则返回false。
阅读全文