首頁 文章 尺取法,错题

尺取法,错题

2022-05-16 20:19  瀏覽數:416  來源:Coat    

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <cstring>
#include <set>
#include <vector>
#include<queue>
#include <math.h>
#include<map>
#include<deque>
using namespace std;
int s[1000100];
int h[1000100];
int main()
{
int P;
scanf("%d", &P);
int num = 0;
map<int, int>awa;
for (int i = 0; i < P; i++)
{
scanf("%d", &h[i]);
if (!awa[h[i]])
{
num++;
awa[h[i]]=num;
}
}
int l = 0, r = 0,t=1;
int mn = 1000100;
s[awa[h[0]]]++;
while (l <= r && r < P)
{
if (t == num)
{
mn = min(mn, r-l+1);
s[awa[h[l]]]--;
if (s[awa[h[l]]] == 0)
t--;
l++;
}
else
{
r++;
s[awa[h[r]]]++;
if (s[awa[h[r]]] == 1)
t++;
}
}
cout << mn;
}



聲明:以上文章均為用戶自行添加,僅供打字交流使用,不代表本站觀點,本站不承擔任何法律責任,特此聲明!如果有侵犯到您的權利,請及時聯系我們刪除。

字符:    改为:
去打字就可以设置个性皮肤啦!(O ^ ~ ^ O)