根据这个佬的思路改编出来的代码@lnu20231491207
#include<bits/stdc++.h>
using namespace std;
int a[100010];
int c[100010];
int main()
{
	int ans=0;
	int n,k;cin>>n>>k;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1,j=1;i<=n;i++)
	{
		if(a[i]>k)//如果出现大于的数字,就把两个指针都汇聚到这个数字右边的第一个下标 
		{
			i++;
			while(j<i)
			{
				c[a[j]]--;
				j++;
			}
			i--;//continue之后会更新i 
			continue;
		}
		c[a[i]]++;
		while(c[a[i]]>1)
		{
			c[a[j]]--;
			j++;
		}
		if(i-j+1==k) ans++;
	}
	cout<<ans<<endl;
	return 0;
}
感谢这个佬,感觉对双指针的理解加深了很多