首页 > 其他分享 >代码随想录训练营第五十九天| 单调栈

代码随想录训练营第五十九天| 单调栈

时间:2022-12-10 16:45:13浏览次数:70  
标签:right maxRight nums int 第五十九 随想录 height st 训练营

 今天是第五十九天,有经典的接雨水问题

 

●  503.下一个更大元素II 

class Solution {
    public int[] nextGreaterElements(int[] nums) {
        if(nums == null || nums.length <= 1) {
            return new int[]{-1};
        }
        int size = nums.length;
        int[] result = new int[size];
        Arrays.fill(result,-1);
        Stack<Integer> st= new Stack<>();
        for(int i = 0; i < 2*size; i++) {
            while(!st.empty() && nums[i % size] > nums[st.peek()]) {
                result[st.peek()] = nums[i % size];
                st.pop();
            }
            st.push(i % size);
        }
        return result;
    }
}

一样的模版题

●  42. 接雨水 

class Solution {
    public int trap(int[] height) {
        int left = 0,right = height.length - 1;
        int maxLeft = 0,maxRight = 0;
        int ans = 0;
        while(left < right) {
            maxLeft = Math.max(maxLeft,height[left]);
            maxRight = Math.max(maxRight,height[right]);
            if(maxLeft < maxRight) {
                ans += maxLeft - height[left];
                left++;
            }else {
                ans += maxRight - height[right];
                right--;
            }
        }
        return ans;
    }
}

不太会,之后再复习

 

今天的单调栈完成,明天是最后一天了,加油

标签:right,maxRight,nums,int,第五十九,随想录,height,st,训练营
From: https://www.cnblogs.com/catSoda/p/16971831.html

相关文章