56. Merge Intervals

Posted 小河沟大河沟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了56. Merge Intervals相关的知识,希望对你有一定的参考价值。

56. 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]. 

解析

  • 分析:题目要求对区间进行合并,首先必须对区间按照左边元素的大小进行排序,然后对排序后的数组进行遍历,合并。能够合并的区间必须符合 a.begin <=b.begin <= a.end.
//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:

    static int compare(Interval val1,Interval val2)
    {
        return val1.start < val2.start;
    }

    vector<Interval> merge(vector<Interval>& intervals) {

        if (intervals.size()<=1)
        {
            return intervals;
        }
        sort(intervals.begin(),intervals.end(),compare); //按第一关键字排序
        vector<Interval> vec;
        Interval temp=intervals[0];
        
        for (int i = 1; i < intervals.size(); i++)
        {
            Interval node = intervals[i]; //取出每一个节点
            if (node.start<=temp.end)
            {
                temp.end = max(temp.end,node.end);  // [[1,4],[2,3]]
            }
            else
            {
                vec.push_back(temp);
                temp = intervals[i];
            }
        }
        vec.push_back(temp);
        return vec;
    }
};

题目来源

以上是关于56. Merge Intervals的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 56. Merge Intervals

#Leetcode# 56. Merge Intervals

56. Merge Intervals - LeetCode

56. Merge Intervals

#56 Merge intervals

56. Merge Intervals