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::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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue