题解 | #合并区间#
合并区间
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); } }