zoukankan      html  css  js  c++  java
  • LeetCode 56 合并区间

    题目:

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

    示例 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] 可被视为重叠区间。

    解题思路:

    按照给出的示例,我们可以发现只要循环一遍,把前后两个区间并列,不可并列就可压到answer中。但实际上题目没有说明给出的集合都是递增的,这样便不可直接循环来做。由此,应该先对这个集合进行排序,使之按照start递增,这样便可按照上述方法解题了。

    代码:

     1 /**
     2  * Definition for an interval.
     3  * struct Interval {
     4  *     int start;
     5  *     int end;
     6  *     Interval() : start(0), end(0) {}
     7  *     Interval(int s, int e) : start(s), end(e) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     vector<Interval> merge(vector<Interval>& intervals) {
    13         vector<Interval> ans;
    14         if(intervals.empty())
    15             return ans;
    16         int len = intervals.size();
    17         sort(intervals.begin(), intervals.end(), [](Interval &a, Interval &b)
    18         {
    19             return a.start < b.start;
    20         });
    21         Interval temp = intervals[0];
    22         for(int i = 1; i < len; ++i) {
    23             if(intervals[i].start <= temp.end) {
    24                 
    25                 temp.end = max(intervals[i].end, temp.end);
    26             }
    27             else {
    28                 ans.push_back(temp);
    29                 temp = intervals[i];
    30             }
    31         }
    32         ans.push_back(temp);
    33         return ans;
    34     }
    35 };
  • 相关阅读:
    Redis之数据持久化RDB与AOF
    linux命令
    路由选择协议
    三次握手+滑动窗口
    JSP的文件上传
    JSP的会话(Session)跟踪
    JSP的Cookie处理
    JSP的过滤器
    JSP的表单处理
    JSP中HTTP状态码
  • 原文地址:https://www.cnblogs.com/moxiangfeng/p/10701335.html
Copyright © 2011-2022 走看看