题解 | #插入区间#

插入区间

https://www.nowcoder.com/practice/1d784b5472ab4dde88ea2331d16ee909

//这道题和信封堆叠很类似

//给 n 个信封的长度和宽度。如果信封 a 的长和宽都小于信封 b ,那么信封 a 可以放到信封 b 里,请求出信封最多可以嵌套多少层。

//数据范围: 1 \le n \le 2\times10^31≤n≤2×103 , 1 \le lettersi, lettersi \le 2\times10^31≤lettersi,lettersi≤2×103


/**
 * struct Interval {
 *    int start;
 *    int end;
 *    Interval(int s, int e) : start(start), end(e) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param Intervals Interval类vector 
     * @param newInterval Interval类 
     * @return Interval类vector
     */
//自定义比较器
    static bool cmp(Interval &a,Interval &b){
        if(a.start==b.start){
            return a.end<b.end;
        }
        return a.start<b.start;
    }
    vector<Interval> insertInterval(vector<Interval>& Intervals, Interval newInterval) {
        // write code here
        vector<Interval> res;
        Intervals.push_back(newInterval);
        int n=Intervals.size();
        sort(Intervals.begin(),Intervals.end(),cmp);//对数据进行排序
        int temp=0;
        int end=Intervals[0].end,first=Intervals[0].start;
        for(int i=1;i<n;i++){
            if(end>=Intervals[i].start){
                end=max(end,Intervals[i].end);//贪心策略取最远能达到的地方
            }else{
                Interval ans;
                ans.start=first;
                ans.end=end;              
                res.push_back(ans);
                int j=res.size();//因为不满足之前if判断,first和end将进行判断从而进入下一个测试区间
                if(j>0&&res[j-1].end==end&&res[j-1].start==first){
                first=Intervals[i].start;
                end=Intervals[i].end;
                continue;
                }     
            }
        }//将最后一个区间放入答案中
        Interval ans;
        ans.start=first;
        ans.end=end;
        res.push_back(ans);    
        return res;
    }
};


全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 13:47
机械打工仔:你自己匿名可以,这么好的公司就别给它匿名了
点赞 评论 收藏
分享
真烦好烦真烦:豆包润色了自己没看看吗,再说了,都说豆包是愚蠢且勤快的大学生,ds才是聪明的研究生,怎么敢让豆包写论文的
你们的毕业论文什么进度了
点赞 评论 收藏
分享
Lorn的意义:你这种岗位在中国现在要么牛马天天加班,要么关系户进去好吃好喝,8年时间,真的天翻地覆了,对于资本来说你就说一头体力更好的牛马,哎,退伍没有包分配你真的亏了。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 12:11
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务