题解 | 每日温度

每日温度

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

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 每日温度
     * @param dailyTemperatures int整型一维数组 
     * @return int整型一维数组
     */
    public int[] temperatures (int[] dailyTemperatures) {
        ArrayDeque<Integer> st = new ArrayDeque<>();
        int[] res = new int[dailyTemperatures.length];
        for(int i = dailyTemperatures.length-1; i >= 0; i--){
            //如果当前元素大于栈内元素,将它们出栈
            while(!st.isEmpty() && dailyTemperatures[st.peek()] <= dailyTemperatures[i])
                st.pop();
            //如果当前元素小于栈内元素,则记录栈顶元素作为结果
            if(!st.isEmpty() && dailyTemperatures[st.peek()] > dailyTemperatures[i])
                res[i] = st.peek() - i;
            //如果栈空,则说明没有更大的元素
            if(st.isEmpty())
                res[i] = 0;
            st.push(i);
        }
        return res;

    }
}

全部评论

相关推荐

吴offer选手:学到了,下次面试也放张纸在电脑上,不然老是忘记要说哪几个点
点赞 评论 收藏
分享
找到实习就改名4月17日下午更改:1600一个月?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务