use std::cmp::max; use std::collections::HashMap; struct Solution; impl Solution { pub fn maximum_unique_subarray(nums: Vec) -> i32 { let mut map: HashMap = HashMap::new(); let mut ans = 0; for i in 0..nums.len() { if map.contains_key(&nums[i]) { let l = i - map.len(); let r = i; let mut temp = 0; let mut j = l; while j < r { temp += nums[j]; j+=1; } ans = max(ans, temp); j = l; while nums[j] != nums[i] { map.remove(&nums[j]); j += 1; } map.insert(nums[i], i); } else { map.insert(nums[i], i); } } let mut temp = 0; let mut j = nums.len() - map.len(); while j < nums.len() { temp += nums[j]; j += 1; } max(ans, temp) } } fn main() { let sl = Solution::maximum_unique_subarray(vec![4,2,4,5,6]); println!("{}", sl); }