Skip to content

Commit 3dae86e

Browse files
authored
Merge pull request #113 from jxs/missing-number
Added Rust missing-number solution
2 parents ed6581a + 42c1898 commit 3dae86e

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

Diff for: problems/missing-number/missing-number.rs

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
//returns the missing number, or in the case Vec is empty, returns None
2+
fn missing_number(input: &[usize]) -> Option<usize> {
3+
if input.is_empty() {
4+
return None;
5+
}
6+
7+
let non_missing: usize = (1..input.len() + 2).sum();
8+
let missing: usize = input.iter().sum();
9+
10+
Some(non_missing - missing)
11+
}
12+
13+
fn main() {
14+
println!(
15+
"missing number: {}",
16+
missing_number(&[1, 2, 3, 4, 6]).unwrap()
17+
);
18+
}
19+
20+
#[cfg(test)]
21+
mod tests {
22+
use super::*;
23+
24+
#[test]
25+
fn returns_none_if_vec_is_empty() {
26+
assert_eq!(None, missing_number(&[]));
27+
}
28+
29+
#[test]
30+
fn finds_missing_number_sequential_range() {
31+
assert_eq!(4, missing_number(&[1, 2, 3, 5, 6]).unwrap());
32+
}
33+
}

0 commit comments

Comments
 (0)