因为是搜单调队列搜到这个题

这个就是误导我的博客http://www.cnblogs.com/Phantom01/p/5871977.html

想着单调队列想了两天,又综合了

单调栈优化dp:hdu1506Largest Rectangle in a Histogram &hdu1505city game dp

想了一下是否是单调栈优化,发现了单调队列和单调栈对数组末尾的处理是一样的,区别只是在于单调栈前面不出栈,单调队列

poj2823Sliding Window【单调队列经典题】leetcode239. Sliding Window Maximum【python刷题】

hdu1506是求直方图的最大面积,需要维护递增的单调栈,被pop出的是较大的,因为求的最大面积,肯定是两边的小。

后来对象看了题解肯定了我说双指针的大体思路,但是还是很纠结为啥这样的遍历确定能找到最优解??只是能从直观上推断出:因为是两个挡板,移动长挡板一定不是最优解 →_→

今天早上觉得这个题似曾相识,翻了一遍,发现了

面试算法——双指针的应用leetcode 42. Trapping Rain Water

还以为是一样的,纠结了半天,发现这个题是用上面的位置存水再见

class Solution(object):
    def maxArea(self, height):
        """
        :type height: List[int]
        :rtype: int
        """
        l=0
        r=len(height)-1
        ans=0
        while(l<r):
            ans=max(ans,(r-l)*min(height[l],height[r]))
            if(height[l]<height[r]):
                l=l+1
            else:
                r=r-1
        return ans