检查 C++ 中给定的一组区间中是否存在两个重叠的区间
假设,我们获得了一组区间,其中包括值 (time1, time2),其中 time1 表示事件的开始时间,time2 表示事件的结束时间。我们的任务是检查这些区间中的任何区间是否与该集合中的其他区间重叠。如果任区间重叠,则返回结果为 True,否则返回 False。
因此,如果输入类似 [(4,7), (5,11), (7,11), (5,8)],则输出将为 True。
为了解决这个问题,我们将遵循以下步骤 −
- 对列表 inputArr 进行排序
- 对于从 1 到 inputArr 大小的范围 i,执行
- 如果 inputArr [i - 1].time2 > inputArr[i].time1,则
- 返回 True
- 返回 False
- 如果 inputArr [i - 1].time2 > inputArr[i].time1,则
让我们看看以下实现以获得更好的理解 −
示例
#include <bits/stdc++.h>
using namespace std;
class IntervalClass {
public:
int time1, time2;
};
bool compare(IntervalClass inst1, IntervalClass inst2){
return (inst1.time1 < inst2.time1) ? true : false;
}
bool solve(vector<IntervalClass> &inputArr){
int size = inputArr.size();
sort(inputArr.begin(), inputArr.end(), compare);
for (int i = 1; i < size; i++)
if (inputArr[i - 1].time2 > inputArr[i].time1)
return true;
return false;
}
int main(){
vector<IntervalClass> inputArr = {{4,7},{5,11},{7,11},{5,8}};
int size = sizeof(inputArr) / sizeof(inputArr[0]);
cout << solve(inputArr);
}输入
{{4,7},{5,11},{7,11},{5,8}}输出
1
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP