美文网首页
42. 接雨水

42. 接雨水

作者: 名字是乱打的 | 来源:发表于2025-08-28 15:41 被阅读0次

一 题目:

二 思路:

单调递增栈

三 代码:

 public int trap(int[] height) {

        int sum=0;

        //存放下一个大于等于自己的柱子,相邻的丢弃
        Stack<Integer> stack = new Stack<>();

        for (int i = 0; i < height.length; i++) {
            //有高度差了,看看能计算几层水
            while (!stack.isEmpty() && height[i] > height[stack.peek()]) {
                //水底
                int low=stack.pop();
                //相同元素一并出栈
                while (!stack.isEmpty() &&height[ stack.peek()]==height[low]){
                    stack.pop();
                }

                //计算本层水
                if (!stack.isEmpty()){
                    //左边界
                    Integer left = stack.peek();
                    //高度差
                    int h=Math.min(height[left]-height[low],height[i]-height[low]);
                    int w=i-left-1;
                    sum+=h*w;
                }
            }
            stack.push(i);
        }

        return sum;
    }

相关文章

  • 42. 接雨水

  • 42. 接雨水

    ···class Solution {public int trap(int[] height) {int sum...

  • 42. 接雨水

    给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 ...

  • 42. 接雨水

    给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 ...

  • 42.接雨水

    题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。输入:...

  • 42. 接雨水

    给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。柱状图上面是由数...

  • 42. 接雨水

    题目描述 给定n个非负整数表示宽度为1的柱子高度,按此排序下雨后能接多少水。 示例: 解题思路 每个柱子可接的水量...

  • 42. 接雨水

    题目给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例:输入...

  • 42. 接雨水

  • 42. 接雨水

    给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 ...

网友评论

      本文标题:42. 接雨水

      本文链接:https://www.haomeiwen.com/subject/jlueajtx.html