题解 | #相差不超过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")

全部评论

相关推荐

嵌入式求职之路:可以看我经验😂,https://www.nowcoder.com/share/jump/73221730841876945
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务