求大佬纠错
3372查看
LY234
2024-10-06 13:56
#include<bits/stdc++.h>
using namespace std;
const long long N = 1e5;

int main() {
    int n; cin >> n;//数字序列个数
    int a[N] = { 0 };//各数字的个数
    vector<int>b;//有哪些数字
    int num;
    for (int i = 0; i < n; i++) {
        cin >> num;
        b.push_back(num);
        a[num]+=1;
    }

   /* for (int i = 0; i < 20; i++) {
        if (a[i] != 0) {
            printf("a[%d]=%d\n", i, a[i]);
        }
    }*/


    sort(b.begin(), b.end());
    auto it = unique(b.begin(), b.end());
    b.erase(it, b.end());

   /* for (int i = 0; i < b.size(); i++) {
        cout << b[i] << ' ';
    }*/

    int delete_num = 0;
    for (int i = 0; i < b.size(); i++) {
        if (a[b[i]] < b[i]) {
            delete_num += a[b[i]];
        }
        if (a[b[i]] > b[i]) {
            delete_num += a[b[i]] - b[i];
        }
    }

    cout << delete_num;
}
copy

这份代码为什么只能过两个用例,是有什么特殊情况没考虑吗

全部回复(1)
cc
429
cc
L429
2024-10-16 13:13

num 的范围是 11091 \sim 10^9,a[num] += 1 肯定会使数组越界呀

回复
你的回复