diff --git a/rust/57-Insert-Interval.rs b/rust/57-Insert-Interval.rs new file mode 100644 index 000000000..ead0a07e1 --- /dev/null +++ b/rust/57-Insert-Interval.rs @@ -0,0 +1,21 @@ +pub fn insert(intervals: Vec>, mut new_interval: Vec) -> Vec> { + let mut res: Vec> = Vec::new(); + + for i in 0..intervals.len() { + if new_interval[1] < intervals[i][0] { + res.push(new_interval.clone()); + return [res, intervals[i..].to_vec()].concat().to_vec(); + } else if new_interval[0] > intervals[i][1] { + res.push(intervals[i].clone()); + } else { + new_interval = vec![ + new_interval[0].min(intervals[i][0]), + new_interval[1].max(intervals[i][1]), + ]; + } + } + + res.push(new_interval); + + res +}