2022-08-15 16:42阅读: 92评论: 0推荐: 0

力扣-56-合并区间

如果将所有区间按照左端点进行排序,那么能够合并的区间一定是连续的

class Solution {
public:
int randomInRange(int start, int end) {
srand(time(NULL));
return rand() % (end - start + 1) + start;
}
int paritition(vector<vector<int>>& data, int start, int end) {
int index = randomInRange(start, end);
int small = start - 1;
swap(data[index], data[end]);
for (index = start; index < end; ++index) {
if (data[index][0] < data[end][0]) {
++small;
if (small!=index)
swap(data[index], data[small]);
}
}
++small;
swap(data[small], data[end]);
return small;
}
void quickSort(vector<vector<int>>& data, int start, int end) {
if (start == end) return;
int index = paritition(data, start, end);
if (index > start) quickSort(data, start, index-1);
if (index < end) quickSort(data, index+1, end);
}
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>> ret;
// 将数组按照左端点进行排序——快排
quickSort(intervals, 0, intervals.size() - 1);
ret.push_back(intervals[0]);
for (int i = 1; i < intervals.size(); ++i) {
if (intervals[i][0] > ret[ret.size() - 1][1]) {
ret.push_back(intervals[i]);
}
else {
ret[ret.size() - 1][1] = max(intervals[i][1], ret[ret.size() - 1][1]);
}
}
return ret;
}
};

一些小细节上思考得不够清晰,调试了半天
结果好像效率也不怎么样

看官方,!?怎么就写这么少?!用sort不讲武德

芜湖!——自己写的排序比库方法差一大截,我其实是没想到按数组首元素排能直接用sort的

天!以后能用sort我绝对不自己写了

本文作者:YaosGHC

本文链接:https://www.cnblogs.com/yaocy/p/16588430.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   YaosGHC  阅读(92)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起