比如:
1 2 1 1 1 2 1 1
1 和 2 是不同的元素,并且是交叉排布的,我们只需要删除最小相同区间即可破坏这个优美序列
这里就是删除头部的1即可,那么删除的最小数量就是1
ac解答:
#include <iostream>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100100;
int t,n;
int q[N];
int main(void)
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&q[i]);
int v = q[1],mini=1e9,cnt=0;
for(int i=1;i<=n;i++)
{
if(q[i]==v)
cnt++;
else
{
mini = min(mini,cnt);
cnt=0;
}
}
mini = min(mini,cnt);
if(cnt==n) puts("-1");
else printf("%d\n",mini);
}
return 0;
}