通行证
- 积分
- 645
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2014-5-29
- 最后登录
- 1970-1-1
|
练习写了一下最后一个add interval,有问题请指正:
class Intervals {
public:
struct Interval {
public:
int start;
int end;
Interval() : start(0), end(0) {}
Interval(int s, int e) : start(s), end(e) {}
};
void addInterval(int from, int to){
interval.push_back(Interval(from, to));
}
int getTotalCoveredLength(){
if (interval.size()<=0)
return 0;
if (interval.size()==1)
return interval[0].end - interval[0].start;
std::sort(interval.begin(), interval.end(), Interval::isSort);
res.push_back(interval[0]);
for (int i=1; i<interval.size(); i++){
if (res.back().end >= interval[i].start)
res.back().end = max(res.back().end, interval[i].end);
else
res.push_back(interval[i]);
}
totalCoveredLength = 0;
for (int i=0; i<res.size(); i++){
int lengh = res[i].end - res[i].start;
if (lengh > totalCoveredLength)
totalCoveredLength = length;
}
return totalCoveredLength;
}
bool ifSort(Interval &a, Interval &b){
return (a.start<b.start);
}
private:
vector<Interval> interval;
vector<Interval> res;
int totalCoveredLength;
};
补充内容 (2015-2-15 09:06):
这个是用c++ |
|