Leetcode 57. Insert Interval 加一行代码就好了

Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).

You may assume that the intervals were initially sorted according to their start times.

Example 1:

Input: intervals = [[1,3],[6,9]], newInterval = [2,5]
Output: [[1,5],[6,9]]

Example 2:

Input: intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
Output: [[1,2],[3,10],[12,16]]
Explanation: Because the new interval [4,8] overlaps with [3,5],[6,7],[8,10]

题目链接:https://leetcode.com/problems/insert-interval/

这题就是Leetcode 56. Merge Intervals加了一行代码 intervals.push_back(newInterval);太简单了,速度有待提高,但对于这题,我觉得足够了,不改了

/**
 * 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 bool cmp(struct Interval a,struct Interval b)
    {
        if(a.start!=b.start)
            return a.start<b.start;
        return a.end<b.end;
    }
    vector<Interval> insert(vector<Interval>& intervals, Interval newInterval) {
        intervals.push_back(newInterval);
        sort(intervals.begin(),intervals.end(),cmp);
        for(int i=1;i<intervals.size();)
        {
            if(intervals[i].start<=intervals[i-1].end)
            {
                intervals[i-1].end=max(intervals[i].end,intervals[i-1].end);
                intervals.erase(intervals.begin()+i);
            }
            else
            {
                i++;
            }
        }
        return intervals;
    }
};

猜你喜欢

转载自blog.csdn.net/salmonwilliam/article/details/86535259