题解 | 【模板】多重集合操作

【模板】多重集合操作

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

arr = []
import bisect
def insertValue(x):
    # TODO: 实现插入逻辑
    bisect.insort(arr, x)

def eraseValue(x):
    # TODO: 实现删除逻辑
    index = bisect.bisect_left(arr, x)
    if index<len(arr):
        if arr[index] == x:
            arr.pop(index)
def xCount(x):
    # TODO: 求x在集合中的个数
    return bisect.bisect_right(arr, x)-bisect.bisect_left(arr, x)

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

def getPre(x):
    # TODO: 实现找前驱
    if len(arr)==0:
        return -1
    index = bisect.bisect_left(arr, x)
    if index<=0:
        return -1 
    else:
        return arr[index-1]

def getBack(x):
    # TODO: 实现找后继
    if len(arr)==0:
        return -1
    index = bisect.bisect_right(arr, x)
    if index==len(arr):
        return -1
    elif index<=len(arr)-1: 
        return arr[index]
    else:
        return -1

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(xCount(x))
        elif op == 4:
            print(sizeOfSet())
        elif op == 5:
            print(getPre(x))
        elif op == 6:
            print(getBack(x))

if __name__ == "__main__":
    main()

全部评论

相关推荐

03-01 21:45
中北大学 golang
孤蓝长空:请你说一下为什么你用websocket而不是http,请你说一下什么是rpc,为什么用rpc,你的rpc的传输协议是JSON,xml还是什么 请你描述一下你的鉴权流程(完整的) 我问的是第二个项目,随便问的哈哈哈
开工第一帖
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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