Maximum Erasure Value LeetCode solution in Rust

1
/// @author: Leon
2
/// https://leetcode.com/problems/maximum-erasure-value/
3
/// Time Complexity: O(`len_n`)
4
/// Space Complexity: O(`RANGE`)
5
impl Solution {
6
pub fn maximum_unique_subarray(nums: Vec<i32>) -> i32 {
7
const RANGE: usize = 10e4 as usize + 7;
8
let len_n: usize = nums.len();
9
let mut freqs: Vec<u16> = vec![0; RANGE];
10
let mut lo: usize = 0;
11
let mut most: i32 = 0;
12
let mut sum: i32 = 0;
13
for hi in 0..len_n {
14
sum += nums[hi];
15
freqs[nums[hi] as usize] += 1;
16
while lo < hi && freqs[nums[hi] as usize] > 1 {
17
sum -= nums[lo];
18
freqs[nums[lo] as usize] -= 1;
19
lo += 1;
20
}
21
most = std::cmp::max(most, sum);
22
}
23
most
24
}
25
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0