From 424a7f705167716ff22b362a254db9732b3797ef Mon Sep 17 00:00:00 2001 From: Dale Seo <5466341+DaleSeo@users.noreply.github.com> Date: Wed, 16 Sep 2026 20:46:10 -0400 Subject: [PATCH] feat: solve insert interval --- insert-interval/DaleSeo.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 insert-interval/DaleSeo.rs diff --git a/insert-interval/DaleSeo.rs b/insert-interval/DaleSeo.rs new file mode 100644 index 0000000000..41c2349579 --- /dev/null +++ b/insert-interval/DaleSeo.rs @@ -0,0 +1,20 @@ +// TC: O(n) +// SC: O(n) +impl Solution { + pub fn insert(intervals: Vec>, mut new_interval: Vec) -> Vec> { + let mut result = Vec::with_capacity(intervals.len() + 1); + let mut iter = intervals.into_iter().peekable(); + + while let Some(interval) = iter.next_if(|i| i[1] < new_interval[0]) { + result.push(interval); + } + while let Some(interval) = iter.next_if(|i| i[0] <= new_interval[1]) { + new_interval[0] = new_interval[0].min(interval[0]); + new_interval[1] = new_interval[1].max(interval[1]); + } + result.push(new_interval); + result.extend(iter); + + result + } +}