力扣2799.统计完全子数组的数目
方法仍然是找最小的包含所有数字的子数组
- 当找到最小子数组时 j左边的元素也可以随意加上 即res += j;
class Solution { public: int countCompleteSubarrays(vector<int>& nums) { int n=nums.size(),res=0; int m = unordered_set<int>(nums.begin(),nums.end()).size(); unordered_map<int,int> cnt; for(int i=0,j=0;i<n;i++) { cnt[nums[i]] ++; while(cnt.size() == m) { int x = nums[j++]; if(-- cnt[x] == 0) cnt.erase(x); } res += j; } return res; } };