题解 | #合并区间#

合并区间

https://www.nowcoder.com/practice/69f4e5b7ad284a478777cb2a17fb5e6a

/**
 * struct Interval {
 *	int start;
 *	int end;
 *	Interval(int s, int e) : start(s), end(e) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param intervals Interval类vector 
     * @return Interval类vector
     */
    vector<Interval> merge(vector<Interval>& intervals) {
        // write code here
        vector<Interval>merged;
        if(intervals.size()<=1)
        {
            return intervals;
        }
        //排序
        sort(intervals.begin(),intervals.end(),[](const Interval &a,const Interval &b){return a.start<b.start;});
        int first=0;
        for (int second = 1; second < intervals.size(); ++second) {  
            // 如果当前区间的起始位置小于等于前一个区间的结束位置,则合并这两个区间  
            if (intervals[second].start <= intervals[first].end) {  
                // 更新前一个区间的结束位置为两个区间结束位置中的较大者  
                intervals[first].end = max(intervals[first].end, intervals[second].end);  
            } else {  
                // 否则,将前一个区间加入合并后的结果中,并更新first为second  
                merged.push_back(intervals[first]);  
                first = second;  
            }  
        }  
  
        // 不要忘记将最后一个区间(如果有的话)也加入合并后的结果中  
        merged.push_back(intervals[first]);  
  
        return merged;  
    }
};

使用first和second进行遍历,模拟双指针,先进性排序,然后再使用second进行遍历,对比

#我的实习求职记录#
全部评论

相关推荐

09-21 09:53
门头沟学院 C++
点赞 评论 收藏
分享
08-21 16:35
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
09-24 11:06
辽宁大学 市场
深莞高速因为台风都封掉了,华为协商后,特地开通华为通道,凭工卡可以正常通勤......
崔喃喃:“台风您好,19级专家已驳回了您18级台风的OA登陆申请”
投递华为技术有限公司等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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