题目分析
如果一个子数组达标,也就是它内部的最大值减去最小值小于等于给定限制limit, 则其内部任意小范围一定也达标,因为范围变小,最大值只可能变小或者不变,而最小值只可能变大或者不变。
如果一个子数组不达标,则再扩大范围一定会更加不达标,因为范围变大,最大值只可能上升或者不变,而最小值只可能下降或者不变。
先固定左边界l,右边界r不断右移扩展窗口,每次判断新加入的数是否使窗口达标,如果达标,则继续拓展,不达标则停止,计算以当前l开头的达标子数组的最大长度。
求解代码
publicstaticintMAXN=100001;public