数组中每个元素的左边第一个小和右边第一个小:
如[
如何在复杂度为O(n)的情况下计算出所有元素的左边第一个小和右边第一个小?
这是leetcode中的“
如:
的面积最大矩形就是图中的阴影部分,即10;
开始我只想到方法一,提交后超时, 看discuss中才知道第二、第三种方法,第二种方法虽然复杂度低点,但编写的难度不会低。
方法(1):求出所有以i为左边,j为右边的区域面积, 同时求最大面积值。 n*n超时!
方法(2):分治法 nlogn
方法(3):动态规划, 求出以i为最短条的区域面积
如[
2,1,5,6,2,3
]中5左边第一个小的元素是1,右边第一个小的元素是2;
如何在复杂度为O(n)的情况下计算出所有元素的左边第一个小和右边第一个小?
这是leetcode中的“
Largest Rectangle in Histogram
”,原题是求柱状图中面积最大的矩形。如:
的面积最大矩形就是图中的阴影部分,即10;
开始我只想到方法一,提交后超时, 看discuss中才知道第二、第三种方法,第二种方法虽然复杂度低点,但编写的难度不会低。
方法(1):求出所有以i为左边,j为右边的区域面积, 同时求最大面积值。 n*n超时!
方法(2):分治法 nlogn
方法(3):动态规划, 求出以i为最短条的区域面积