import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); //贪心+滑动窗口 //动态扩展的区间快速获取当前区间的最大值/最小值 //一个组里完全可以只有一个元素,输数最少的分组所以 //加入新元素,如果加入后,这个组的 max - min <= k → 可以合并 //如果加入后,max - min > k → 不能合并 → 必须结束当前组,从这个新元素开始新建一组 int n=in.nextInt(); int k=in.nextInt(); int[]arr=new int[n]; for(int i=0;i<n;i++){ arr[i]=in.nextInt(); } int group=1; int min=arr[0]; int max=arr[0]; for(int i=1;i<n;i++){ int newmin=Math.min(arr[i],min); int newmax=Math.max(max,arr[i]); if(newmax-newmin>k){ group++; min=arr[i]; max=arr[i]; }else{ //合并元素更新最大值最小值 min=newmin; max=newmax; } } System.out.println(group); } }