zoukankan      html  css  js  c++  java
  • 57. Insert Interval

    description:

    插入新的区间,涉及到区间的合并.
    Note:

    Example:

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

    answer:

    class Solution {
    public:
        vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
            int n = intervals.size(), cur = 0;
            vector<vector<int>> res;
            while (cur < n && intervals[cur][1] < newInterval[0]) {
                res.push_back(intervals[cur++]);
            }
            while (cur < n && intervals[cur][0] <= newInterval[1]) {
                newInterval[0] = min(newInterval[0], intervals[cur][0]);
                newInterval[1] = max(newInterval[1], intervals[cur][1]);
                ++cur;
            }
            res.push_back(newInterval);
            while (cur < n) {
                res.push_back(intervals[cur++]);
            }
            return res;
        }
    };
    

    relative point get√:

    hint :

    第一个循环把不和给定新区间重叠的,应该放在新区间前面的区间先放在答案里
    第二个循环处理有重叠的部分,一直到后边最后一个没有重叠了退出
    最后一个循环将新区间后边的没有重叠的放到答案里

  • 相关阅读:
    TCP的初始cwnd和ssthresh
    C/C++ main
    PHP Function
    run bin
    PHP
    LAMP
    PHP MATH
    PHP array sort
    inline
    gcc g++
  • 原文地址:https://www.cnblogs.com/forPrometheus-jun/p/11285743.html
Copyright © 2011-2022 走看看