problem:1695. 删除子数组的最大得分
思路:滑动窗口维护窗口内各个元素只出现一次。
Ps.变形题
Accode:
class Solution {
public:
int maximumUniqueSubarray(vector<int>& nums) {
vector<int> dict(1e4+1,0);
int len = nums.size();
int sum = 0,ans=0;
int left=0;
for(int i=0;i<len;i++){
dict[nums[i]]++;
sum+=nums[i];
if(dict[nums[i]]>1){
for(int j=left;j<i;j++){
dict[nums[j]]--;
sum-=nums[j];
if(dict[nums[i]]<=1){
left = j+1;
break;
}
}
}
ans = max(ans,sum);
}
return ans;
}
};
时间复杂度:$o(n)$