长度为K子数组中的最大和-定长滑动窗口
2461. 长度为 K 子数组中的最大和 - 力扣(LeetCode)
Solution
如何判断当前窗口是否满足每个数字都不相同呢,用一个变量cnt记录当前窗口内不同元素的个数,当cnt等于k就表示当前窗口每个数字各不相同。
class Solution {
public:long long maximumSubarraySum(vector<int>& nums, int k) {long long ans=0;long long sum=0;int n=nums.size();int cnt=0;unordered_map<int,int>hash;for(int r=0;r<n;++r){//入int x=nums[r];if(hash.find(x)==hash.end()){hash[x]=1;cnt++;}else{hash[x]+=1;}sum+=x;//更新if(cnt==k) ans=max(ans,sum);//出int l=r-k+1;if(l>=0){int y=nums[l];hash[y]-=1;if(hash[y]==0){cnt--;hash.erase(y);}sum-=y;}}return ans;}
};