From e9815ea0aaf114bc2c603a88f529e09d121fb443 Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Mon, 18 Mar 2024 00:12:11 +0100 Subject: [PATCH] =?UTF-8?q?cs:=20add=20=C2=AB57.=20Insert=20Interval=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Matej Focko --- cs/insert-interval.cs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 cs/insert-interval.cs diff --git a/cs/insert-interval.cs b/cs/insert-interval.cs new file mode 100644 index 0000000..eb21e5b --- /dev/null +++ b/cs/insert-interval.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; + +public class Solution { + private static int[] Merge(int[] l, int[] r) { + return new int[] { Math.Min(l[0], r[0]), Math.Max(l[1], r[1]) }; + } + + public int[][] Insert(int[][] intervals, int[] newInterval) { + var newIntervals = new List(); + + var i = 0; + for (; i < intervals.Length && intervals[i][1] < newInterval[0]; ++i) { + newIntervals.Add(intervals[i]); + } + + for (; i < intervals.Length && newInterval[1] >= intervals[i][0]; ++i) { + newInterval = Merge(newInterval, intervals[i]); + } + newIntervals.Add(newInterval); + + for (; i < intervals.Length; ++i) { + newIntervals.Add(intervals[i]); + } + + return newIntervals.ToArray(); + } +}