题意:如果两个数的绝对差值为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,0last = a[0]t = 0res = 0while r < n:num = a[r]if num - last <= 1:r += 1last = numelse:if a[l] == a[r-1]:res += r-l-1t += 1else:t += 1l = rlast = numif a[l] == a[r-1]:res += r-l-1t += 1else:t += 1# print(res,t)print(res + t - 1)