题目:给定一些无序区间,判断某个给定的特定区间是否在这些无序的区间内。 这个题目比较简单,首先将给定的区间排序,在对重合的区间进行排序,使得区间变成递增且不重叠的若干个区间,对于给定的区间在已经处理好的区间内进行二分查找,完成区间覆盖的判断。 代码如下:
#include <stdio.h> #include <vector> #include <algorithm> using namespace std; 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>* co
区间重合判断(编程之美2.19)
最新推荐文章于 2013-09-30 11:18:27 发布
该博客介绍了如何判断一个特定区间是否被无序区间集合覆盖。首先对区间进行排序,然后合并重叠区间,接着使用二分查找来确定目标区间是否被覆盖。提供了C++代码示例,展示了具体的实现过程。
摘要由CSDN通过智能技术生成