From 5c3727b0d98335a2ba2b49e5d6754fac1b7fc914 Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Tue, 26 Mar 2024 22:08:37 +0100 Subject: [PATCH] =?UTF-8?q?rs:=20add=20=C2=AB41.=20First=20Missing=20Posit?= =?UTF-8?q?ive=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Matej Focko --- rs/first-missing-positive.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 rs/first-missing-positive.rs diff --git a/rs/first-missing-positive.rs b/rs/first-missing-positive.rs new file mode 100644 index 0000000..3577ae5 --- /dev/null +++ b/rs/first-missing-positive.rs @@ -0,0 +1,21 @@ +impl Solution { + pub fn first_missing_positive(nums: Vec) -> i32 { + let n = nums.len() + 1; + let mut seen = vec![false; n]; + + for x in nums.into_iter() { + if x <= 0 || (n as i32) <= x { + continue; + } + + seen[x as usize - 1] = true; + } + + 1 + seen + .into_iter() + .enumerate() + .find(|(_, val)| !val) + .expect("there's always a missing positive integer") + .0 as i32 + } +}