由于题目中取的是任意两个数字相差不超过 k, 则保证子数组中 max - min <= k 即可,对数组进行排序,利用双指针遍历数组的,当前值与子数组中的最小值相差超过 k 时,移动左指针,最终得到可以取的最大数组长度
n, k = map(int, input().strip().split(" ")) data = sorted(map(int, input().strip().split(" "))) res = 0 l = r = 0 while r < n: while data[r] - data[l] > k: l += 1 res = max(res, r - l + 1) r += 1 print(res)