• Merge Intervals***


    Given a collection of intervals, merge all overlapping intervals.

    For example,
    Given [1,3],[2,6],[8,10],[15,18],
    return [1,6],[8,10],[15,18].

    Analyse: First sort, then merge. 

    Notice the static function!

    Runtime: 592ms

     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     static bool compare(Interval &interval1, Interval &interval2){
    13         return interval1.start < interval2.start;
    14     }
    15     vector<Interval> merge(vector<Interval>& intervals) {
    16         vector<Interval> result;
    17         if(intervals.size() == 0) return result;
    18         if(intervals.size() == 1) return intervals;
    19         
    20         sort(intervals.begin(), intervals.end(), Solution::compare);
    21         Interval inter(intervals[0].start, intervals[0].end);
    22         for(int i = 1; i < intervals.size(); i++){
    23             if(inter.end < intervals[i].start){
    24                 result.push_back(inter);
    25                 inter.start = intervals[i].start;
    26                 inter.end = intervals[i].end;
    27             }
    28             else{
    29                 inter.start = min(inter.start, intervals[i].start);
    30                 inter.end = max(inter.end, intervals[i].end);
    31             }
    32         }
    33         result.push_back(inter);
    34         return result;
    35     }
    36 };

    Runtime: 596ms.

     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> result;
    14         if(intervals.empty()) return result;
    15         
    16         sort(intervals.begin(), intervals.end(), comp);
    17         result.push_back(intervals[0]);
    18         if(intervals.size() == 1) return result;
    19         
    20         for(int i = 1; i < intervals.size(); i++){
    21             if(intervals[i].start > result[result.size() - 1].end)
    22                 result.push_back(intervals[i]);
    23             else{
    24                 intervals[i].start = min(intervals[i].start, result[result.size() - 1].start);
    25                 intervals[i].end = max(intervals[i].end, result[result.size() - 1].end);
    26                 result.pop_back();
    27                 result.push_back(intervals[i]);
    28             }
    29         }
    30         return result;
    31     }
    32     
    33     static bool comp(Interval int1, Interval int2){
    34         return int1.start < int2.start;
    35     }
    36 };
  • 相关阅读:
    WOW.js – 让页面滚动更有趣
    ps快捷键
    多语言网站(如何实现网站的多语言版本?)
    什么是海外镜像点?
    Photoshop视频教程全集:从零开始学习PS全集教学视频
    Storm流计算之项目篇(Storm+Kafka+HBase+Highcharts+JQuery,含3个完整实际项目)
    升级版:深入浅出Hadoop实战开发(云存储、MapReduce、HBase实战微博、Hive应用、Storm应用)
    Hadoop2.0/YARN深入浅出(Hadoop2.0、Spark、Storm和Tez)
    基于Hadoop2.0、YARN技术的大数据高阶应用实战(Hadoop2.0YARNMa
    Spark内核源码剖析、Hadoop高端
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/4718878.html
Copyright © 2020-2023  润新知