pub fn missing_number(numbers: Vec) -> i32 { // The range of numbers can be described as the total sum of all possible // numbers in that range. let total_range = (0..=numbers.len() as i32).sum::(); // And since only one number is missing from that range, the difference // between the range's sum and the numbers' sum will be that missing number. let sum_of_numbers = numbers.iter().sum::(); total_range - sum_of_numbers } #[test] fn test_missing_number() { assert_eq!(missing_number(vec![3, 0, 1]), 2); assert_eq!(missing_number(vec![0, 1]), 2); assert_eq!(missing_number(vec![9, 6, 4, 2, 3, 5, 7, 0, 1]), 8); }