diff --git a/src/main.rs b/src/main.rs index e6fc312..2e9f85f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,26 +1,26 @@ -use std::collections::HashMap; +use std::collections::HashSet; mod arr; struct Solution {} impl Solution { - pub fn max_subarray_length(nums: Vec, k: i32) -> i32 { - let mut mp = HashMap::new(); - let mut l: i64 = -1; - let mut ans = 0; - for r in 0..nums.len() { - *mp.entry(nums[r]).or_insert(0) += 1; - while *mp.get(&nums[r]).unwrap() > k { - l += 1; - *mp.get_mut(&nums[l as usize]).unwrap() -= 1 + pub fn missing_integer(nums: Vec) -> i32 { + let mut st = nums.clone().into_iter().collect::>(); + let mut sum = nums[0]; + for i in 1 .. nums.len() { + if nums[i] != nums[i-1] + 1 { + break; } - ans = ans.max(r as i32 - l as i32); + sum += nums[i]; } - ans + while st.contains(&sum) { + sum += 1; + } + sum } } fn main() { println!( "{:?}", - Solution::max_subarray_length(vec![1, 2, 3, 1, 2, 3, 1, 2], 2) + Solution::missing_integer(vec![14,9,6,9,7,9,10,4,9,9,4,4]) ); }