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

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

 

●  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;
    }
}
复制代码

不太会,之后再复习

 

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

posted @   小猫Soda  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示