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;
}
}