题解 | JAVA #每日温度# [P0-T2]

每日温度

http://www.nowcoder.com/practice/1f54e163e6944cc7b8759cc09e9c78d8

单调栈直接套娃 记口诀就行:
找右边的就从右往左,找左边的从左往右
找小的就单调递增,找大的就单调递减

这题是找右边的大的,那就从右往左loop, 建单调递减栈

O(n), O(n)

import java.util.*;

public class Solution {
    public int[] temperatures (int[] temperatures) {
      int[] ans = new int[temperatures.length];
      
      // stack规则: 从右向左push index,栈单调递减(相对于temp[index])
      Deque<Integer> stack = new ArrayDeque<>();
      for (int i = temperatures.length-1; i >= 0; i--) {
        while (!stack.isEmpty() && temperatures[stack.peek()] <= temperatures[i])
          stack.pop();
        
        ans[i] = stack.isEmpty() ? 0 : stack.peek() - i;
        stack.push(i);
      }
      
      return ans;
    }
}
全部评论

相关推荐

小红书 后端开发 总包n+8w+期权
点赞 评论 收藏
分享
已老实求offer😫:有点像徐坤(没有冒犯的意思哈)
点赞 评论 收藏
分享
整顿职场的柯基很威猛:这种不可怕,最可怕的是夹在一帮名校里的二本选手,人家才是最稳的。
点赞 评论 收藏
分享
12-02 17:22
已编辑
西安交通大学 Java
华为 昇腾 ai软件开发 薪资20k x (14-16),职级13A,5%公积金,c/cpp
BLOOMING7:闭眼滴滴,华子给的又少又累
点赞 评论 收藏
分享
评论
3
1
分享
牛客网
牛客企业服务