HJ181 相差不超过k的最多数

张开发
2026/4/18 4:17:23 15 分钟阅读

分享文章

HJ181 相差不超过k的最多数
题目题解(53)讨论(29)排行中等 通过率29.67% 时间限制1秒 空间限制256M知识点双指针校招时部分企业笔试将禁止编程题跳出页面为提前适应练习时请使用在线自测而非本地IDE。描述给定一个包含 nn 个正整数的数组 a1,a2,…,ana1​,a2​,…,an​。你需要从中选择若干个数可以全部也可以一个都不选使得在所选集合中任意两数的差的绝对值均不超过给定整数 kk。请输出能够选出的元素个数的最大值。【名词解释】若选出的元素集合为 SS则要求 max⁡(S)−min⁡(S)≦kmax(S)−min(S)≦k。输入描述第一行输入两个整数 n,k(1≦n≦2×105, 1≦k≦109)n,k(1≦n≦2×105, 1≦k≦109)。第二行输入 nn 个整数 a1,a2,…,an(1≦ai≦109)a1​,a2​,…,an​(1≦ai​≦109)。输出描述输出一个整数表示满足条件的最多可选元素数量。示例1输入5 3 2 1 5 3 2复制输出4复制说明选取元素集合 {1,2,2,3}{1,2,2,3} 满足最大值与最小值之差为 33且无法再加入 55。#includeiostream #includealgorithm using namespace std; int main(){ int n,k; cinnk; int a[n]; for(int i0;in;i)cina[i]; sort(a,an); int l0,r1; int max1; while(rn){ if(a[r]-a[l]k){ if(maxr-l1)maxr-l1; r; } else if(lr){ l; } } coutmax; }

更多文章