思路好像有问题
查看原帖
思路好像有问题
289237
VAICII楼主2022/11/9 15:25

思路是双指针,输入时先把数据存哈希表和集合里,然后拷贝到数组里,得到去重数组,排序后进行遍历

#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 求问这个思路哪里有问题

2022/11/9 15:25
加载中...