思路是双指针,输入时先把数据存哈希表和集合里,然后拷贝到数组里,得到去重数组,排序后进行遍历
#include<bits/stdc++.h>
using namespace std;
void print_vector(vector<int> arr)
{
for(int i : arr)cout << i << " ";
}
int main(void)
{
int n, m;
cin >> n;
unordered_map<int, int> h1;
unordered_set<int> s1;
vector<int> nums;
while(n--)
{
cin >> m;
h1[m]++;
s1.insert(m);
}
for(auto i : s1) nums.push_back(i);
sort(nums.begin(), nums.end());
int i = 0, j = 1, cnt = 0, min = INT32_MAX;
while(j < nums.size())
{
cnt = 1;
while(j < nums.size() && nums[j] - nums[i] == 1 && h1[nums[j]] == h1[nums[i]])//如果元素数量一致,则能凑成N组连续的子序列
{
cnt++;
j++,i++;
}
j++, i++;
min = min > cnt ? cnt : min;
}
cout << min << endl;
}
第1,2,7,8,9,10个测试点WA 求问这个思路哪里有问题