移动端公众号网站开发,湖南人文科技学院官网,阿里巴巴运营培训课程,茶叶网站建设策划方案u001fProblem: 56. 合并区间 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.将数组按内部的一维数组的第一项按从小到大的顺序排序#xff1b; 2.创建二维结果数组merged#xff0c;并将排序后的数组中的第一个一维度数组存入到merged中#xff1b; 3.从后面的一… Problem: 56. 合并区间 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.将数组按内部的一维数组的第一项按从小到大的顺序排序 2.创建二维结果数组merged并将排序后的数组中的第一个一维度数组存入到merged中 3.从后面的一维数组开始遍历并比较 3.1 若后面一个一维数组的左侧值大于merged中的一维数组的右侧值则直接将当前的一维数组添加到merged中 3.2 若后面一个一维数组的左侧值小于merged中的一维数组的右侧值则取出右侧值较大的合并 复杂度
时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn)其中 n n n为一维数组的个数 空间复杂度: O ( n ) O(n) O(n) Code
class Solution {
public:vectorvectorint merge(vectorvectorint intervals) {if (intervals.size() 0) {return {};}sort(intervals.begin(), intervals.end());vectorvectorint merged;for (int i 0; i intervals.size(); i) {int left intervals[i][0];int right intervals[i][1];if (merged.empty() || merged.back()[1] left) {merged.push_back({left, right});} else {merged.back()[1] max(merged.back()[1], right);}}return merged;}
};