1695. 删除子数组的最大得分

This commit is contained in:
li-chx 2025-07-22 21:59:38 +08:00
parent 473f02c269
commit f6a1b6df26
1 changed files with 30 additions and 14 deletions

View File

@ -1,28 +1,44 @@
use std::cmp::max;
use std::collections::HashMap;
struct Solution;
impl Solution {
pub fn count_days(mut days: i32, mut meetings: Vec<Vec<i32>>) -> i32 {
meetings.sort_by(|a, b| a[0].cmp(&b[0]));
pub fn maximum_unique_subarray(nums: Vec<i32>) -> i32 {
let mut map: HashMap<i32, usize> = HashMap::new();
let mut ans = 0;
let mut last_end = 1;
for c in meetings.iter() {
if last_end >= c[0] {
last_end = max(last_end, c[1] + 1);
continue;
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 += c[0] - last_end;
last_end = c[1] + 1;
ans = max(ans, temp);
j = l;
while nums[j] != nums[i] {
map.remove(&nums[j]);
j += 1;
}
days += 1;
if days > last_end {
ans += days - last_end;
map.insert(nums[i], i);
}
ans
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::count_days(10, vec![vec![5, 7], vec![1, 3], vec![9, 10]]);
let sl = Solution::maximum_unique_subarray(vec![4,2,4,5,6]);
println!("{}", sl);
}