LeetCode 56. Merge Intervals
在这道题目中,使用如下代码就能AC:
/**
* Definition for an interval.
* struct Interval {
* int start;
* int end;
* Interval() : start(0), end(0) {}
* Interval(int s, int e) : start(s), end(e) {}
* };
*/
class Solution {
public:
static bool cmp(Interval& a, Interval& b){
return a.start < b.start;
}
vector<Interval> merge(vector<Interval>& intervals) {
vector<Interval> res;
if(intervals.empty())
return res;
sort(intervals.begin(), intervals.end(), cmp);
int n = intervals.size();
res.push_back(intervals[0]);
for(int i = 1; i < n; i++){
if(res.back().end < intervals[i].start)
res.push_back(intervals[i]);
else
res.back().end = max(res.back().end, intervals[i].end);
}
return res;
}
};
但是如果在自定义的比较函数中加两行就会报下面这个错误:
//更改后的比较函数
static bool cmp(Interval& a, Interval& b){
if(a.start == b.start)
return a.end <= b.end;
else
return a.start < b.start;
}
报错:
最后会显示时间超时。求问各位大佬到底是什么原因?真的是多一个比较就会超时还是程序本身有问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
sort
的Compare
不符合规范.参考std::sort,Compare就是说如果有
comp(a,b) == true
,那么comp(b, a) == false
必须成立.你的
end
用<=
比较,会导致comp(a,b) == true, comp(b, a) == true