Exemplo n.º 1
0
        private static List<Interval> Merge(Interval[] intervals)
        {
            List<Interval> merged = new List<Interval>();

            var sorted =  intervals.OrderBy(interval => interval.Start).ToArray();

            for (int i=0; i< sorted.Length-1; i++)
            {
                if (sorted[i].End >= sorted[i + 1].Start)
                {
                    // merge to make i +1 item the merged one
                    sorted[i + 1].Start = sorted[i].Start;
                    // need to check end too
                    if (sorted[i].End > sorted[i + 1].End)
                    {
                        sorted[i + 1].End = sorted[i].End;
                    }
                }
                else
                {
                    merged.Add(sorted[i]);
                }

            }
            // add last
            merged.Add(sorted[sorted.Length - 1]);

            return merged;
        }