class Solution4 {
/*
1695. 删除子数组的最大得分
给你一个正整数数组 nums ,请你从中删除一个含有 若干不同元素 的子数组。删除子数组的 得分 就是子数组各元素之 和 。
返回 只删除一个 子数组可获得的 最大得分 。
如果数组 b 是数组 a 的一个连续子序列,即如果它等于 a[l],a[l+1],...,a[r] ,那么它就是 a 的一个子数组。
*/
public int maximumUniqueSubarray(int[] nums) {
int lk=0;
int rk=0;
Set<Integer> set =new HashSet<>();
int tmp=0;
int max=0;
int length = nums.length;
while(rk < length){
while(lk<length && set.contains(nums[rk])){
set.remove(nums[lk]);
tmp -= nums[lk];
lk++;
}
set.add(nums[rk]);
tmp += nums[rk];
max=Math.max(tmp,max);
rk++;
}
return max;
}
}
【LeetCode】1695. 删除子数组的最大得分
最新推荐文章于 2022-12-06 15:59:38 发布