1695. 删除子数组的最大得分
This commit is contained in:
parent
473f02c269
commit
f6a1b6df26
44
src/main.rs
44
src/main.rs
|
@ -1,28 +1,44 @@
|
||||||
use std::cmp::max;
|
use std::cmp::max;
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
struct Solution;
|
struct Solution;
|
||||||
impl Solution {
|
impl Solution {
|
||||||
pub fn count_days(mut days: i32, mut meetings: Vec<Vec<i32>>) -> i32 {
|
pub fn maximum_unique_subarray(nums: Vec<i32>) -> i32 {
|
||||||
meetings.sort_by(|a, b| a[0].cmp(&b[0]));
|
let mut map: HashMap<i32, usize> = HashMap::new();
|
||||||
let mut ans = 0;
|
let mut ans = 0;
|
||||||
let mut last_end = 1;
|
for i in 0..nums.len() {
|
||||||
for c in meetings.iter() {
|
if map.contains_key(&nums[i]) {
|
||||||
if last_end >= c[0] {
|
let l = i - map.len();
|
||||||
last_end = max(last_end, c[1] + 1);
|
let r = i;
|
||||||
continue;
|
let mut temp = 0;
|
||||||
|
let mut j = l;
|
||||||
|
while j < r {
|
||||||
|
temp += nums[j];
|
||||||
|
j+=1;
|
||||||
}
|
}
|
||||||
ans += c[0] - last_end;
|
ans = max(ans, temp);
|
||||||
last_end = c[1] + 1;
|
j = l;
|
||||||
|
while nums[j] != nums[i] {
|
||||||
|
map.remove(&nums[j]);
|
||||||
|
j += 1;
|
||||||
}
|
}
|
||||||
days += 1;
|
map.insert(nums[i], i);
|
||||||
if days > last_end {
|
|
||||||
ans += days - last_end;
|
|
||||||
}
|
}
|
||||||
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() {
|
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);
|
println!("{}", sl);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue