力扣-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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步