739. 每日温度

一 题目:

二 思路:

利用单调栈,我们设一个栈,存储还没设置更高温度的栈,然后只存储比当前栈元素值更高的idenx,那么栈中一定是单调增

三 代码:

class Solution {
     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;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容