class Solution {
public:
int numberOfSubstrings(string s) {
int a[5];
int ant=0;
int n=s.size();
for(int i=0,j=0;i<n;i++)
{
a[s[i]-'a']++;
while(a[0]&&a[1]&&a[2])
{
a[s[j]-'a']--;
j++;
}
ant+=j;
}
return ant;
}
};
2926.统计最大元素至少出现K次的子数组
class Solution {
public:
long long countSubarrays(vector<int>& nums, int k) {
long long ant=0;
int s=0;
int n=nums.size();
int ma=ranges::max(nums);
for(int i=0,j=0;i<n;i++)
{
if(nums[i]==ma)s++;
while(s==k)
{
if(nums[j]==ma)s--;
j++;
}
ant+=j;
}
return ant;
}
};
2302.统计得分小于K 的子数组数目
class Solution {
public:
long long countSubarrays(vector<int>& nums, long long k) {
long long ant=0;
int n=nums.size();
long long t=0;
for(int i=0,j=0;i<n;i++)
{
t+=nums[i];
while(t*(i-j+1)>=k)
{
t-=nums[j];
j++;
}
ant+=i-j+1;
}
return ant;
}
};
class Solution {
public:
long long countGood(vector<int>& nums, int k) {
long long ant=0;
unordered_map<int,int> m;
int n=nums.size();
long long t=0;
for(int i=0,j=0;i<n;i++)
{
t+=m[nums[i]]++;
while(t>=k)
{
t-=--m[nums[j]];
j++;
}
ant+=j;
}
return ant;
}
};
2763.不间断子数组
class Solution {
public:
long long continuousSubarrays(vector<int>& nums) {
long long ant=0;
int n=nums.size();
multiset<int> s;
for(int i=0,j=0;i<n;i++)
{
s.insert(nums[i]);
while(*s.rbegin()-*s.begin()>2)
{
s.erase(s.find(nums[j++]));
}
ant+=i-j+1;
}
return ant;
}
};