题目:给定一些无序区间,判断某个给定的特定区间是否在这些无序的区间内。
这个题目比较简单,首先将给定的区间排序,在对重合的区间进行排序,使得区间变成递增且不重叠的若干个区间,对于给定的区间在已经处理好的区间内进行二分查找,完成区间覆盖的判断。
程序如下:
这个题目比较简单,首先将给定的区间排序,在对重合的区间进行排序,使得区间变成递增且不重叠的若干个区间,对于给定的区间在已经处理好的区间内进行二分查找,完成区间覆盖的判断。
程序如下:
#include <stdio.h>
#include <vector>
#include <algorithm>
class Interval {
public:
Interval(int start, int end) : start_(start), end_(end) {}
Interval() :start_(0), end_(0) {}
static bool OrderByStart(const Interval& left, const Interval& right) {
return left.start_ < right.start_;
}
friend bool operator<(const Interval& left, const Interval& right) {
return left.start_ < right.start_;
}
int start_;
int end_;
};
void CombinInterval(std::vector<Interval>& orginal, std::vector<Interval>* combined) {
if (orginal.size() < 1) {
return;
}
sort(orginal.begin(), orginal.end(), Interval::OrderByStart);
Interval combined_interval = orginal[0];
int new_endi