#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,不符合就增加左边的下标。