739. 每日温度

一 题目

二 思路

单调栈
我们用栈存储上一次还没找到更大温度的下标值
那么每次我们遍历新的数据都可以把之前小于本温度的数据进行弹栈
那么栈中温度必然是单调下降的

三 代码:

 public int[] dailyTemperatures(int[] temperatures) {
        int len=temperatures.length;
        int[] res=new int[len];
        //存储还没设置更高温度位数的下标
        Stack<Integer> st = new Stack<>();
        for (int i = 0; i < temperatures.length; i++) {
            //如果本次遍历的温度大于栈中上一个存储的温度,直到不大于
            //其实这一步也说明了,栈中数据必定是温度递减的,不然该温度必然出栈了
            while (!st.isEmpty()&&temperatures[i]>temperatures[st.peek()]){
                int v=st.pop();
                res[v]=i-v;
            }
            st.push(i);
        }
        return res;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容