题解 | #合并区间#

合并区间

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

using System;
using System.Collections.Generic;

/*
public class Interval
{
    public int start;
    public int end;

    public Interval ()
    {
        start = 0;
        end = 0;
    }

    public Interval (int s, int e)
    {
        start = s;
        end = e;
    }
}
*/

class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param intervals Interval类一维数组
     * @return Interval类一维数组
     */
    public List<Interval> merge (List<Interval> intervals) {
        // write code here
        if (intervals.Count == 0 || intervals.Count == 1) return intervals;
        LinkedList<Interval> res = new LinkedList<Interval>();
        //按照区间首排序
        intervals.Sort((i1, i2) => {
            return i1.start.CompareTo(i2.start);
        });
        //放入第一个区间
        res.AddLast(intervals[0]);
        //遍历后续区间,查看是否与末尾有重叠
        for (int i = 1; i < intervals.Count; i++) {
            //区间有重叠,更新结尾
            if (intervals[i].start <= res.Last.Value.end)
                res.Last.Value.end = Math.Max(res.Last.Value.end, intervals[i].end);
            //区间没有重叠,直接加入
            else
                res.AddLast(intervals[i]);
        }
        return new List<Interval>(res);
    }
}

全部评论

相关推荐

07-02 10:44
门头沟学院 C++
码农索隆:太实诚了,告诉hr,你能实习至少6个月
点赞 评论 收藏
分享
牛客84809583...:举报了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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