比如数据
4
1 3 5 7
答案应该是1
我的代码是100010, 但是能AC这题, 就离谱
#include <iostream>
#include <algorithm>
#include <cmath>
#include <map>
using namespace std;
const int N = 1e5 + 10;
int n, a[N], res;
map<int, int> Map;
int main()
{
res = N;
cin>>n;
for (int i = 0; i < n; i++) cin>>a[i], Map[a[i]]++;
sort(a, a + n);
int t = 1;
for (int i = 1; i < n; i++)
if (a[i] != a[i - 1]) a[t++] = a[i];
n = t;
for (int i = 1; i < n; i++)
{
if (a[i] == a[i - 1] + 1 && Map[a[i - 1]])
{
int num = Map[a[i]], cnt, j; cnt = 1;
for (j = i; j < n && a[j] == a[j - 1] + 1 && Map[a[j]] >= Map[a[j - 1]]; j++) cnt++;
for (int k = i; k < j; k++) Map[a[k]] -= num;
res = min(res, cnt);
while (i < n && !Map[a[i]]) i++;
}
}
cout<<res<<endl;
return 0;
}