利用set进行数组去重

题目

关于map和set的区别


该题的题解

#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <unordered_set>
using namespace std;
typedef long long LL;

LL sum = 0;
unordered_set<int> st;
int main()
{
    int n, k;
    cin >> n >> k;
    for (int i = 0; i < n; i++)
    {
        int temp;
        cin >> temp;
        if (temp >= 1 && temp <= k)
        {
            st.insert(temp);
        }
    }
    sum = (LL)k * (k + 1) / 2; //这里必须要转换为LL类型,否则会溢出。因为k定义的是int类型。
    LL sum2 = 0;
    for (int t : st)
    {
        sum2 += t;
    }
    cout << sum - sum2;

    return 0;
}
posted @ 2025-02-26 16:15  electricity111  阅读(30)  评论(0)    收藏  举报