题解 | 相差不超过k的最多数
相差不超过k的最多数
https://www.nowcoder.com/practice/562630ca90ac40ce89443c91060574c6
import java.util.Arrays; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n=in.nextInt(), 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 ans = 0; while(r<n){ int temp = arr[r] - arr[l]; while(temp>k && l<r){ l+=1; temp = arr[r] - arr[l]; } // 或者可以选择这样,与上面那个while作用一样。但是使用continue后总耗时会额外多一点。 // if(temp>k){ // l+=1; // continue; // } ans = Math.max(ans, r-l+1); r += 1; } System.out.println(ans); } }