单调栈 - wenzhoullq/leetcode GitHub Wiki
for(int i=0;i<nums.length;i++){
while(!s.isEmpty()&&nums[s.peek()]比较nums[i]){
s.pop();
......
}
s.push();
}
D. Max GEQ Sum-灵茶-2023.1.16 min/max()模板无法满足前缀和的单调,只能用最传统的模板
2454. 下一个更大元素 IV 再维护一个优先队列
Stack<Integer> st = new Stack<>();
st.push(-1);
int ans = 0;
for(int i = 0 ; i <= heights.length ;i++ ){
int h = i <heights.length ? heights[i]:-1;
while(st.size() > 1 && heights[st.peek()] > h){
int index = st.pop();
ans = Math.max(ans,heights[index] * (i - st.peek() - 1));
}
st.push(i);
}
return ans;
思想类似于min()的单调栈解法,模板类似
2104. 子数组范围和 最大值就是nums取反后变为最小值