牛客408806439号 level
获赞
5
粉丝
0
关注
0
看过 TA
0
IP属地:广东
暂未填写个人简介
私信
关注
昨天 11:36
题意:如果两个数的绝对差值为1,那么i和j就连了一条边,为了使得所有边可以互相到达,还需要自己加多少条边思路:排序 + 区间划分 先从小到大排序,若a[i+1] - a[i] <= 1,则划分为同一区间,若区间内所有数相等,相当于有r-l+1个连通分量,若有任意两个值不等,那整个区间都是同一个连通分量代码:for _ in range(int(input())):    n = int(input())    a = list(map(int,input().strip().split()))    a.sort()    l,r = 0,0    last = a[0]    t = 0    res = 0    while r < n:        num = a[r]        if num - last <= 1:            r += 1            last = num        else:            if a[l] == a[r-1]:                res += r-l-1                t += 1            else:                t += 1            l = r            last = num    if a[l] == a[r-1]:        res += r-l-1        t += 1    else:        t += 1    # print(res,t)    print(res + t - 1)
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务