1.概览

示意图:
image.png
实现

  • 使用数组实现的叫静态栈
  • 使用链表实现的叫动态栈

    2.单调栈

    2.1 计算更暖天气

    Ref: https://leetcode-cn.com/problems/daily-temperatures/
    Input: temperatures = [73,74,75,71,69,72,76,73]
    Output: [1,1,4,2,1,1,0,0]
    1. public int[] dailyTemperatures(int[] temperatures) {
    2. int length = temperatures.length;
    3. int[] ans = new int[length];
    4. Deque<Integer> stack = new LinkedList<Integer>();
    5. for (int i = 0; i < length; i++) {
    6. int temperature = temperatures[i];
    7. while (!stack.isEmpty() && temperature > temperatures[stack.peek()]) {
    8. int prevIndex = stack.pop();
    9. ans[prevIndex] = i - prevIndex;
    10. }
    11. stack.push(i);
    12. }
    13. return ans;
    14. }