题解 | #合并区间#

合并区间

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进行遍历,对比

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

相关推荐

04-28 19:31
门头沟学院 Java
真烦好烦真烦:可恶的二手车贩子,居然对我们门头沟学院的人这么没礼貌
点赞 评论 收藏
分享
03-31 17:40
已编辑
门头沟学院 算法工程师
程序员牛肉:小牛肉来也! 也不要焦虑啦,你第一志愿还没有结束,只是回到人才库(泡大池子等待各个部门挑选)而已。仅仅代表你不符合这个组的用人标准,并不能够说明你在本次暑期实习中没机会加入美团了。 还是平复好心态,不断的复盘,等待下一次面试就好了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务