import java.util.HashSet;
import java.util.Set;
/**
* @author xnl
* @Description:
* @date: 2022/7/21 21:46
*/
public class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
int[] nums = {5,2,1,5,5,2,1,2,5};
System.out.println(solution.maximumUniqueSubarray(nums));
}
public int maximumUniqueSubarray(int[] nums) {
Set<Integer> set = new HashSet<>();
int res = 0;
// sum 当前结果下最大值, start 滑动窗口下标
int sum = 0, start =0;
for (int i = 0; i < nums.length; i++){
// 记录窗口的值
if (!set.contains(nums[i])){
set.add(nums[i]);
sum += nums[i];
res = Math.max(res, sum);
} else {
// 匹配是否相等,如果相等就直接跳过,不相等的话,需要删除掉这个结果
while (nums[i] != nums[start]){
// 去掉重复的元素
sum -= nums[start];
set.remove(nums[start]);
start++;
}
start++;
}
}
return res;
}
}
力扣:1695. 删除子数组的最大得分
最新推荐文章于 2025-12-03 17:03:32 发布
本文介绍了一个使用Java实现的解决方案,通过HashSet数据结构优化查找和移除重复元素,以找到给定整数数组中具有最大唯一元素数量的子数组。该方法适用于处理数组中频繁出现的重复值问题。

1000

被折叠的 条评论
为什么被折叠?



