java判断多个数字区间是否有交集
时间: 2023-10-21 18:33:42 浏览: 110
可以使用两个数组分别存储每个数字区间的起始值和结束值,然后对每个数字区间进行比较,判断是否有交集。具体实现可以使用双重循环,时间复杂度为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判断多个Bigdecimal类型的数字区间是否有交集,给出代码示例
你好!关于你的问题,我可以为你提供以下的Java代码示例:
```java
import java.math.BigDecimal;
public class BigDecimalUtils {
/**
* 判断多个BigDecimal类型数字的区间是否有交集
* @param nums 多个BigDecimal类型数字组成的数组
* @return 如果区间有交集返回true,否则返回false
*/
public static boolean hasIntersection(BigDecimal[] nums) {
if (nums == null || nums.length <= 1) {
return false;
}
BigDecimal min = nums[0];
BigDecimal max = nums[0];
for (int i = 1; i < nums.length; i++) {
BigDecimal num = nums[i];
if (num.compareTo(max) > 0) {
max = num;
} else if (num.compareTo(min) < 0) {
min = num;
}
if (max.compareTo(min) < 0) {
return false;
}
}
return true;
}
}
```
如果你有任何问题,欢迎随时向我提问哦!
阅读全文
相关推荐

















