这个问题的本质在于找到最大的区间 [i,j][i,j] ,保证从该区间的所有子区间都满足题意,但是如果每找到一个区间 [i,j][i,j] 就通通把它的子区间数加进去,那么一定会出现重复的情况,所以这里我们只要维护一边,然后去查找最大区间,最后再累加 j−i+1j−i+1 即可。具体的实现所用的数据结构自然就是双向队列,维护一个记录最小值的单调递增队列和一个记录最大值的单调递减队列,最后只需要比较两个队列的头就可以保证 [i,j][i,j] 的合法性。