zoukankan      html  css  js  c++  java
  • 156. Merge Intervals【easy】

    Given a collection of intervals, merge all overlapping intervals.

     
    Example

    Given intervals => merged intervals:

    [                     [
      [1, 3],               [1, 6],
      [2, 6],      =>       [8, 10],
      [8, 10],              [15, 18]
      [15, 18]            ]
    ]
    
    Challenge

    O(n log n) time and O(1) extra space.

    解法一:

     1 /**
     2  * Definition of Interval:
     3  * classs Interval {
     4  *     int start, end;
     5  *     Interval(int start, int end) {
     6  *         this->start = start;
     7  *         this->end = end;
     8  *     }
     9  */
    10 
    11 
    12 class Solution {
    13 public:
    14   /**
    15    * @param intervals: interval list.
    16    * @return: A new interval list.
    17    */
    18   static bool cmp(const Interval &a, const Interval &b) {
    19     return (a.start < b.start);
    20   }
    21   
    22   vector<Interval> merge(vector<Interval>& intervals) {
    23     vector<Interval> ans;
    24     if (intervals.empty()) {
    25       return ans;
    26     } 
    27     
    28     sort(intervals.begin(), intervals.end(), cmp);
    29     ans.push_back(intervals[0]);
    30     for (int i = 1; i < intervals.size(); i++) { 
    31       if (ans.back().end >= intervals[i].start) { 
    32         ans.back().end = max(ans.back().end, intervals[i].end);
    33       } else { 
    34         ans.push_back(intervals[i]);
    35       } 
    36     } 
    37     return ans;  
    38   }
    39 };

    先排序,然后逐个判断是否需要合并

  • 相关阅读:
    纯JavaScripst的全选、全不选、反选 【转】
    Java 文件和byte数组转换
    nc命令使用详解
    mtr 命令详解
    Nginx主动检测方案---Tengine
    Apache相关安全设置
    tomcat APR的配置
    Vsftpd 配置详解
    FTP主动模式和被动模式的区别
    iptables配置详解
  • 原文地址:https://www.cnblogs.com/abc-begin/p/8193595.html
Copyright © 2011-2022 走看看