739. 每日温度

  1. class Solution {
  2. public int[] dailyTemperatures(int[] T) {
  3. if (T == null)
  4. return new int[0];
  5. int len = T.length;
  6. int[] ans = new int[len];
  7. // 维护一个单调不增的栈
  8. Deque<Integer> stack = new LinkedList<>();
  9. int i = 0;
  10. while (i < len) {
  11. if (stack.isEmpty() || T[i] <= T[stack.peek()]) {
  12. stack.push(i);
  13. i++;
  14. } else {
  15. // 确定当前栈顶对应下标需要等待的天数
  16. int index = stack.peek();
  17. ans[index] = i - stack.pop();
  18. }
  19. }
  20. while (!stack.isEmpty()) {
  21. ans[stack.pop()] = 0;
  22. }
  23. return ans;
  24. }
  25. }