#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n,k;
cin>>n>>k;
int a[n];
for(int i=0;i<n;i++)cin>>a[i];
sort(a,a+n);
int l=0,r=1;
int max=1;
while(r<n){
if(a[r]-a[l]<=k){
if(max<r-l+1)max=r-l+1;
r++;
}
else if(l<r){
l++;
}
}
cout<<max;
}
先排序,后循环符合条件的数组的左下标,符合一个判断一次max,不符合就增加左边的下标。
京公网安备 11010502036488号