题解 | #相差不超过k的最多数#
相差不超过k的最多数
https://www.nowcoder.com/practice/562630ca90ac40ce89443c91060574c6
import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
int n=in.nextInt();
int k=in.nextInt();
int[] arr=new int[n];
for(int i=0;i<n;i++){
arr[i]=in.nextInt();
}
Arrays.sort(arr);
int l=0,r=0;
int count=0;
while(r<n){
if(arr[r]-arr[l]>k){
l++;
}
count=Math.max(count,r-l+1);
r++;
}
System.out.print(count);
}
}
1.右指针的++放最后,左指针的++在判断if句中,以右指针遍历完作为结束条件
2.覆盖计数值count应该放在右指针遍历前,这样最有效
小天才公司福利 1320人发布