1 solutions
-
0
C++ :
#include<bits/stdc++.h> using namespace std; int g,n,a[10005],b[10005]; int main() { // freopen("1.in","r",stdin); // freopen("1.out","w",stdout); cin>>g; while(g--) { fill(b,b+10001,0);//b数组记数 cin>>n; for(int i=1;i<=n;i++) scanf("%d",&a[i]); b[a[1]]++; int bj=0; for(int i=2;i<=n;i++)//前后比较,做数组记数 if(a[i]!=a[i-1]) b[a[i]]++,bj=1; if(bj==0) {printf("0\n");continue;} if(b[a[1]]==1 || b[a[n]]==1 || (a[1]==a[n] && b[a[1]]==2)) {printf("1\n");continue;} //a数组第1个或者最后1个只出现1次,或者头尾相同并且只出现2次 b[a[1]]--,b[a[n]]--; //第1个和最后1个次数减1,全部统一为:删除次数=出现次数+1 int ans=10000; for(int i=1;i<=10000;i++) if(b[i]!=0) ans=min(ans,b[i]); printf("%d\n",ans+1); } return 0; }
- 1
Information
- ID
- 1027
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 10
- Tags
- (None)
- # Submissions
- 2
- Accepted
- 2
- Uploaded By