题目描述:
思路来源:
求数组中区间中最小数*区间所有数和的最大值
原文写的很好,本文附上Java版本代码,以及自己的注释理解
public int getMaxSum(int[] nums) {
int maxSum = Integer.MIN_VALUE;
int[] preSum = getPreSumArr(nums);
// 维持一个单调栈,存下标。 栈内下标对应元素单调非递减
LinkedList<Integer> stack = new LinkedList<>();
int index = 0;
while (index < nums.length) {
// 栈为空,或者当前值 >= 栈顶下标对应元素,证明栈顶元素还是最小元素
if (stack.isEmpty()