zoukankan      html  css  js  c++  java
  • LeetCode56:合并区间

    给出一个区间的集合,请合并所有重叠的区间。

    示例 1:

    输入: [[1,3],[2,6],[8,10],[15,18]]
    输出: [[1,6],[8,10],[15,18]]
    解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
    示例 2:

    输入: [[1,4],[4,5]]
    输出: [[1,5]]
    解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。

    可以先对vector进行排序,然后按顺序遍历,这样能merge到一起的区间一定是挨着的,可以直接遍历然后merge。

    这里sort直接就默认使用第一个元素?vector的sort可以通过自己定义排序函数来sort。

     1 class Solution {
     2 public:
     3     vector<vector<int>> merge(vector<vector<int>>& intervals) {
     4         if (intervals.size() == 0) {
     5             return {};
     6         }
     7         sort(intervals.begin(), intervals.end());
     8         vector<vector<int>> merged;
     9         for (int i = 0; i < intervals.size(); ++i) {
    10             int L = intervals[i][0], R = intervals[i][1];
    11             if (!merged.size() || merged.back()[1] < L) {
    12                 merged.push_back({L, R});
    13             }
    14             else {
    15                 merged.back()[1] = max(merged.back()[1], R);
    16             }
    17         }
    18         return merged;
    19     }
    20 };
  • 相关阅读:
    C语言I博客作业06
    C语言I博客作业05
    评分标准
    语言I博客作业04
    C语言I博客作业03
    C语言I博客作业02
    C语言I博客作业10
    第十三周助教总结
    C语言I博客作业09
    第十二周助教总结
  • 原文地址:https://www.cnblogs.com/rookiez/p/13211151.html
Copyright © 2011-2022 走看看