栈与队列(JAVA)

单调栈:

下一个更大元素。

栈与队列(JAVA)_第1张图片

 题目意思如图所示:

栈与队列(JAVA)_第2张图片 单调栈图解:

栈与队列(JAVA)_第3张图片

 

class Solution {
    public int[] nextGreaterElement(int[] nums1, int[] nums2) {
        Stackstack=new Stack<>();
        int res[]=new int[nums2.length];
        int ans[]=new int[nums1.length];
        //从后往前寻找某一元素的下一个比它大的元素。只要看栈顶元素即可。这是一个单调栈
        for(int i=nums2.length-1;i>=0;i--)
        {
            while(!stack.isEmpty()&&nums2[i]>=stack.peek())
            {
                stack.pop();
            }
            res[i]=stack.isEmpty()?-1:stack.peek();
            stack.push(nums2[i]);
        }
        for(int i=0;i

每日温度:

栈与队列(JAVA)_第4张图片

class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        Stackstack=new Stack<>();
        int res[]=new int[temperatures.length];
        int ans[]=new int[temperatures.length];
        for(int i=temperatures.length-1;i>=0;i--)
        {
            while(!stack.isEmpty()&&temperatures[i]>=temperatures[stack.peek()])
            {
                stack.pop();
            }
            res[i]=stack.isEmpty()?0:stack.peek();
            stack.push(i);
        }
        for(int i=0;i0?res[i]-i:0;
        }
        return ans;
    }
}

 

你可能感兴趣的:(java,算法,开发语言)