题解 | 【模板】集合操作

【模板】集合操作

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

import bisect

M = []

def insertValue(x):
    # TODO: 实现插入逻辑
    pos = bisect.bisect_left(M,x)
    # 所有在它左边的元素都 < x , pos是第一个>=x的位置
    if pos == len(M) or M[pos]!=x:
        M.insert(pos,x)
    pass

def eraseValue(x):
    # TODO: 实现删除逻辑
    pos = bisect.bisect_left(M,x)
    if pos < len(M) and M[pos] == x:
        M.pop(pos)
    pass

def xInSet(x):
    # TODO: 实现存在性检查
    pos = bisect.bisect_left(M,x)
    return pos < len(M) and M[pos] == x
    pass

def sizeOfSet():
    # TODO: 返回集合大小
    return len(M)
    pass

def getPre(x):
    # TODO: 实现找前驱
    pos = bisect.bisect_left(M,x)   # 第一个 >=x 的位置
    if pos > 0:
        return M[pos-1]
    else:
        return -1
    pass

def getBack(x):
    # TODO: 实现找后继
    pos = bisect.bisect_right(M,x)  # 第一个 >x 的位置
    if pos < len(M):
        return M[pos]
    else:
        return -1
    pass

def main():
    q = int(input())
    for _ in range(q):
        line = map(int,input().split())
        cnt,op,x=0,0,0
        for i in line:
            if(cnt==0):
                op=i
            else:
                x=i
            cnt+=1
        
        if op == 1:
            insertValue(x)
        elif op == 2:
            eraseValue(x)
        elif op == 3:
            print("YES" if xInSet(x) else "NO")
        elif op == 4:
            print(sizeOfSet())
        elif op == 5:
            print(getPre(x))
        elif op == 6:
            print(getBack(x))

if __name__ == "__main__":
    main()

全部评论

相关推荐

10-30 19:23
已编辑
山东大学(威海) C++
牛至超人:我了个雷 1.实习经历写太长了吧,精简一点,你写那么老多,面试官看着都烦 2.项目经历你放俩竞赛干啥单独拿出来写上几等奖就行了呗 3.一大雷点就是项目经历里的那个课程设计,大家都知道课程设计巨水,不要写课程设计,换一个名字,就叫学生管理系统,面试官问就说是自己做的项目,不要提课程设计的事 4.那个交流经历,简化一下塞到最上面的教育经历里就行了 5.简历尽量一页纸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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