首页 > 其他分享 >[LeetCode Hot 100] LeetCode42. 接雨水

[LeetCode Hot 100] LeetCode42. 接雨水

时间:2023-12-24 15:57:07浏览次数:39  
标签:peek int res top height Hot LeetCode42 100 stack

题目描述

思路一:单调栈

柱子的高度递减的时候是装不了水的,当碰到第一个比之前高的柱子才可以装水。
此时计算栈顶索引能装的水:

  • 宽:i - left - 1(这个left为栈顶元素pop之后的peek值)
  • 高:min(height[left], height[i]) - height[top]
  • 该题维护的是一个单调递减栈


方法一:对应思路一

class Solution {
    public int trap(int[] height) {
        if (height == null || height.length <= 2) return 0;

        // 这里维护的是一个单调递减栈
        Deque<Integer> stack = new ArrayDeque<>();
        int res = 0;

        for (int i = 0; i < height.length; i ++) {
            while (!stack.isEmpty() && height[i] > height[stack.peek()]) {
                int top = stack.pop();
                // 这行代码正好能解决示例1中索引0为0的情况
                if (stack.isEmpty()) break;
                int h = Math.min(height[i], height[stack.peek()]) - height[top];
                int w = i - stack.peek() - 1;
                res += h * w;   
            }
            stack.push(i);
        }
        return res;
    }
}

标签:peek,int,res,top,height,Hot,LeetCode42,100,stack
From: https://www.cnblogs.com/keyongkang/p/17924452.html

相关文章

  • [LeetCode Hot 100] LeetCode84. 柱状图中最大的矩形
    题目描述思路:枚举+优化(单调栈)先固定矩阵的高。然后向左向右找到第一个比当前元素值小的元素,确定好左右边界。对于元素2来说:向左找到第一个比当前元素值小的元素:1的右边界向右找到第一个比当前元素值小的元素:3的右边界枚举每个元素的上边界,确定往左数最远到达哪个边界......
  • 在Flutter中使用PhotoViewGallery指南
    介绍Flutter中的PhotoViewGallery是一个功能强大的插件,用于在应用中展示可缩放的图片。无论是构建图像浏览器、相册应用,还是需要在应用中查看大图的场景,PhotoViewGallery都是一个不错的选择。添加依赖首先,需要在pubspec.yaml文件中添加photo_view插件的依赖。打开该文件,然后在depen......
  • 初中英语优秀范文100篇-036Eating out or Dining at Home-出去吃还是在家吃
    PDF格式公众号回复关键字:SHCZFW036记忆树1Eatingoutisveryconvenientbecausenoonehastocook.翻译外出就餐非常方便,因为没有人需要做饭。简化记忆方便句子结构1"Eatingout":这是一个动名词短语,用来表示行为。"eating"(吃)是动词,用作现在分词形式,用来构成动名......
  • 最大工作频率为32MHz,R7F100GPL2DFA、R7F100GPL3CFA低功耗MCU,10M08SAU169C8GGB MAX® 1
    一、RL78/G23 新一代RL78微控制器,最大工作频率为32MHz,外围功能得到进一步扩展,低功耗性能也有所提升。RL78/G23微控制器是RL78系列的新一代产品,CPU工作时的功耗为41μA/MHz,STOP(保持4KBSRAM)时的功耗为210nA,其低功耗在业内首屈一指。此外,由于采用SNOOZE模式定序器,它还能大幅度减少......
  • 新一代RL78微控制器,R7F100GPJ2DFA和R7F100GPJ3CFA低功耗MCU、32MHz
    概览RL78/G23低功耗MCU可在41μA/MHzCPU运行频率下工作,功耗低,停止4KBSRAM保持时为210nA。该MCU设有snooze模式排序器,可显著降低间歇工作时的功耗。RL78/G23组具有1.6V至5.5V宽工作电压范围,频率高达32MHz。它们还具有30引脚至128引脚各种封装引脚数和高达768KB闪存。除了增强的模......
  • 初中英语优秀范文100篇-035My Favourite City-我最喜欢的城市
    PDF格式公众号回复关键字:SHCZFW035记忆树1IlikeShanghaibestbecauseitisdifferentfromothercitiesinChina.翻译我最喜欢上海,因为它不同于中国其他城市。简化记忆上海句子结构1"IlikeShanghaibest":这是一个主谓宾结构的句子,主语是"I"(我),谓语是"like"......
  • AC1005 安卓图案解锁
    链接:https://ac.nowcoder.com/acm/contest/20960/1005来源:牛客网题目大意:给定一串序列,判定是不是合法的Android密码.安卓图案解锁的密码有这样的一些特点:1.每个数字最多只会被使用一次。2.如果想直接连接两个数字,但是线段中会经过另一个数字,当且仅有那个数字已经在之前就......
  • [LeetCode] 热题100
    128最长连续序列publicclassSolution{publicintlongestConsecutive(int[]nums){if(nums==null||nums.length==0)return0;intans=1;HashMap<Integer,Integer>map=newHashMap<>();for(intnum:......
  • 动态给div赋值高,使页面高度100%
    import{ref,onMounted,onUnmounted,computed,nextTick}from'vue'constboxRef=ref()constsearchBoxRef=ref()consttableBoxHeight=ref(0)constcomputedTableBoxHeight=()=>{constsearchBoxHeight=searchBoxRef.value.clientHe......
  • 初中英语优秀范文100篇-034My Room-我的房间
    PDF格式公众号回复关键字:SHCZFW034记忆树1Weliveinathree-roomflat.翻译我们住在一个三居室的公寓。简化记忆公寓句子结构主语(We):表示句子中的主体,即说话者本人和听话者。谓语(live):表示主体所进行的动作或状态,这里是“居住”的意思。状语(inathree-roomflat):......