zoukankan      html  css  js  c++  java
  • 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].

    思路:

    先是进行排序,从前往后按照第一个数字进行排序。这个时候一个小技巧就是把第一个区间保存,i从1开始,这是小技巧。

    这个时候循环里面判断一下,如果i的start大于刚刚back的end,那么就直接存入result,如果不是,更新一下end。因为有可能会更新区间,end值大于下一个区间的start值。

    代码:

    /**
     * Definition for an interval.
     * struct Interval {
     *     int start;
     *     int end;
     *     Interval() : start(0), end(0) {}
     *     Interval(int s, int e) : start(s), end(e) {}
     * };
     */
    class Solution {
    public:
    
        class Compare {
        public:
            bool operator() (const Interval &i1, const Interval i2) {
                return i1.start < i2.start;
            }
        };
        
        vector<Interval> merge(vector<Interval>& intervals) {
            vector<Interval> result;
            if(intervals.empty()){
                return result;
            }
            Compare cmp;
            sort(intervals.begin(),intervals.end(),cmp);//按照开头数字升序排列
            //注意考虑两个区间合并后,他的end比下一个的start还要大
            int i=0;
            int k=0;
            result.push_back(intervals[0]);//记住加入第一个数据。
            for(int i=1;i<intervals.size();i++){
                if(intervals[i].start>result.back().end){
                    result.push_back(intervals[i]);
                }else{
                    //此时注意两种情况,但是总之是有交集的
                    result.back().end=max(  result.back().end,intervals[i].end  );
                }
            }
            return result;
        }
    };


  • 相关阅读:
    【leetcode】Binary Search Tree Iterator
    【leetcode】Palindrome Partitioning II
    【leetcode】Best Time to Buy and Sell Stock III
    【leetcode】Best Time to Buy and Sell Stock II
    【leetcode】Longest Consecutive Sequence
    【leetcode】Factorial Trailing Zeroes
    【leetcode】Simplify Path
    【leetcode】Generate Parentheses
    【leetcode】Combination Sum II
    【leetcode】Combination Sum
  • 原文地址:https://www.cnblogs.com/jsrgfjz/p/8519886.html
Copyright © 2011-2022 走看看