题解 | 【模板】集合操作

【模板】集合操作

https://www.nowcoder.com/practice/a37b91f84cdf490b8d8b990794211135

#include<bits/stdc++.h>
using namespace std;
set<int> s;
void insertValue(int x){
    //TODO 实现插入逻辑
    s.insert(x);
}
void eraseValue(int x){
    //TODO 实现删除逻辑
    s.erase(x);
}
int xInSet(int x){
    //TODO 实现存在性检查
    return s.count(x);
}
int sizeOfSet(){
    //TODO 返回集合大小
    return s.size();
}
int getPre(int x){
    //TODO 实现找前驱
    auto it=s.lower_bound(x);
    if(it==s.begin()) return -1;
    it--;
    return *it;
}
int getBack(int x){
    //TODO 实现找后继
    //end指向最后一个元素的下一个位置,左闭右开[)
    auto it=s.upper_bound(x);
    if(it==s.end()) return -1;
    return *it;
}

int main(){
    int q,op,x;
    cin>>q;
    while(q--){
        cin>>op;
        if(op==1){
            cin>>x;
            insertValue(x);
        }
        if(op==2){
            cin>>x;
            eraseValue(x);
        }
        if(op==3){
            cin>>x;
            if(xInSet(x)){
                cout<<"YES\n";
            }else{
                cout<<"NO\n";
            }
        }
        if(op==4){
            cout<<sizeOfSet()<<endl;
        }
        if(op==5){
            cin>>x;
            cout<<getPre(x)<<endl;
        }
        if(op==6){
            cin>>x;
            cout<<getBack(x)<<endl;
        }
    }
    return 0;
}

lower_bound 是>=

upper_bound是>

全部评论

相关推荐

01-12 17:45
门头沟学院 Java
985废物一枚:就是问问你能不能接受北京的房租,hr也知道公司工资不高,大概率是要贴钱的
找实习记录
点赞 评论 收藏
分享
牛至超人:哈工大已经很棒了,不需要加括号了,然后咋没有实习经历呢?火速趁寒假整一段实习,导师不让就狠狠肘击
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务