题解 | #相差不超过k的最多数#
相差不超过k的最多数
https://www.nowcoder.com/practice/562630ca90ac40ce89443c91060574c6
//双指针 /*先对数组进行排序,在头部定义两个指针 一个指向当前数,一个不停向后查找与当前数相差小于k的数 如果第二个指针走不动了,就移到当前数。 最后在加上一些终止的细节处理 */ #include <algorithm> #include <iostream> #include <vector> using namespace std; int main() { int n, k; cin>>n>>k; vector<int> vec; int ai; for(int i=0;i<n;++i){ cin>>ai; vec.push_back(ai); } sort(vec.begin(), vec.end()); int left = 0; int right = left; int ans=1,cnt=0; while(left<=right){ if(right==vec.size()){ ans = max(ans,cnt); break; } if(vec[right]-vec[left]>k){ ans = max(ans,cnt); ++left; cnt = cnt-1; continue; } ++right; ++cnt; } cout<<ans; return 0; } // 64 位输出请用 printf("%lld")