use std::collections::HashMap; 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 } ans = ans.max(r as i32 - l as i32); } ans } } fn main() { println!( "{:?}", Solution::max_subarray_length(vec![1, 2, 3, 1, 2, 3, 1, 2], 2) ); }