【名词解释】
第一行输入两个整数
。
第二行输入
个整数
。
输出一个整数,表示满足条件的最多可选元素数量。
5 3 2 1 5 3 2
4
选取元素集合满足最大值与最小值之差为
,且无法再加入
。
def binary_search(a,l,r,target): # 返回最后一个比taregt小的坐标 while l<r: mid = int((l+r) / 2) if a[mid] <= target: if mid+1>r: return mid elif a[mid+1]>target: return mid else: l = mid+1 else: r = mid-1 return l n, k = map(int,input().split()) a = list(map(int,input().split())) a.sort() res = 0 for i in range(n): l = i r = binary_search(a,l+1,n-1,a[i]+k) res = max(res,r-l+1) print(res)
class MainActivity:
def main(self):
# Read the data
n, k = map(int, filter(lambda x: len(x) > 0, input().split(' ')))
nums = list(map(int, filter(lambda x: len(x) > 0, input().split(' '))))
# Initialization
nums.sort()
leftPtr = 0
rightPtr = 1
result = 0
# Traverse
if nums[-1] - nums[0] <= k:
print(n)
return
while rightPtr < n:
num = nums[rightPtr]
while num - nums[leftPtr] > k and leftPtr < rightPtr:
leftPtr += 1
result = max(result, rightPtr - leftPtr + 1)
rightPtr += 1
print(result)
if __name__ == '__main__':
M = MainActivity()
M.main() def func(n, k, alist): if n <= 0: return 0 res = 0 lp = 0 alist.sort() for rp in range(n): if lp < n and alist[rp] - alist[lp] > k: lp += 1 res = max(res, rp-lp+1) return res n, k = map(int, input().strip().split()) alist = list(map(int, input().strip().split())) print(func(n, k, alist))