Description:
题目大意:给定一个长度为n的序列,选择一个其中的元素 x,你可以删除不含有元素 x 的连续序列,要求最终序列中指剩下元素 x。
解题思路:
算法标签:贪心
消除连续的子序列,例如[1,2,2,3,3,4]为[1,2,3,4],然后统计每个元素出现的次数,第一个出现的元素前面没有元素,最后一个出现的元素后面没有元素,所以都要减一,最后求得最小的出现次数即为答案。
代码:
// TSWorld
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 100005;
int main()
{
int T = 0;
int n = 0,minn = 0;
cin>>T;
while(T--) {
scanf("%d",&n);
vector<int>number(n);
vector<int>result(n+1,1);
for (auto &it : number)
cin >> it;
n = unique(number.begin(),number.end()) - number.begin();
number.resize(n);
for(int i = 0;i < n;i++) {
result[number[i]]++;
}
result[number[0]]--;
result[number[n-1]]--;
minn = N;
for(int i = 0;i < n;i++) {
minn = min(minn,result[number[i]]);
}
cout<<minn<<endl;
}
}