Neo's Blog

不抽象就无法深入思考
不还原就看不到本来面目!

0%

单调栈系列之<最小数字*区间和>的最大值

求解一个区间的和乘以这个区间最小值的最大值

解题思路:单调栈 + 前缀数组

i到j的区间和,通过前缀数组,比较容易在O(1)的复杂度内取得。

对每一个元素,取得左边第一个比他小的元素,作为j;从后往前遍历,递增栈;

对每一个元素,取得右边第一个比他小的元素,作为i;从前往后遍历,递增栈;

整体时间复杂度$O(n)$

你的支持是我坚持的最大动力!