最大值和最小值的差小于或者等于num的子数组数量
对于子数组arr[i...j]
,如果max(arr[i...j]) - min(arr[i...j]) <= num
则满足条件。
显然有:
- 如果
arr[i...j]
满足条件,则子数组的子数组,即arr[k...l] (i <= k <= l <= j)
也满足条件- 如果
arr[i...j]
不满足条件,则子数组的父数组,即arr[k...l] (k <= i <= j <= l)
也不满足条件
思路:
设置两个辅助队列
qmax
和min
,两个循环变量i
和j
,并循环遍历数组arr
qmax
的队首和qmin
的队首分别为子数组arr[i...j]
的最大值和最小值
package com.lilydedbb;
import java.util.LinkedList;
/**
* Created by dbb on 2016