https://leetcode-cn.com/problems/daily-temperatures/
单调栈
https://www.yuque.com/docs/share/dcdb944b-0f51-4f7b-a14b-b847ed7bad65?# 《单调栈及其更新结构》
//单调栈解法public int[] dailyTemperatures(int[] temperatures) {if (temperatures == null || temperatures.length == 0) {return new int[0];}int N = temperatures.length;int[] ans = new int[N];// 求一个数右边最近的比它大的数, 那么栈底到栈顶就从大到小, 栈里放的是下标Stack<List<Integer>> stack = new Stack<>();for (int i = 0; i < temperatures.length; i++) {while (!stack.isEmpty() && temperatures[i] > temperatures[stack.peek().get(0)]) {List<Integer> pop = stack.pop();for (Integer popi : pop) {ans[popi] = i - popi;}}if (!stack.isEmpty() && temperatures[stack.peek().get(0)] == temperatures[i]) {stack.peek().add(i);} else {ArrayList<Integer> list = new ArrayList<>();list.add(i);stack.push(list);}}return ans;}
