当前位置: 首页 > news >正文

石河子网站建设公司网站建设小程序开发

石河子网站建设公司,网站建设小程序开发,网站为何改版,广西城乡建设厅官网LeetCode 42. 接雨水 题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数…

LeetCode 42. 接雨水

题目描述

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

示例:
输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。

思路

单调栈
首先考虑清楚存储雨水的必要条件是:后面的高度>前面的高度才有可能做雨水存储,所以这里最好可以用单调栈实现。
下面的单调栈中存储输入数组的下标,通过height[下标]就可以获得下标处高度:

  1. height[栈顶下标]>height[当前下标]时,将当前下标压入栈中(此时是后面的高度<前面的高度);
  2. height[栈顶下标]==height[当前下标]时,弹出栈顶下标,压入当前下标,虽然不弹出就压入也不影响计算,但是因为相同高度没法存水,可以通过这个操作避免重复计算
  3. height[栈顶下标]<height[当前下标]时,就到了计算存水面积的时候了,这里需要不断弹出那些小的元素。那么,储水高度height=Math.min(height[栈顶下标的left],height[栈顶下标的right])-height[栈顶下标] ,就相当于把栈顶的高度作为底,左右围在一起形成一个容器。储水宽度width=栈顶下标的right-栈顶下标的left-1。最终面积sum+=h*w

代码

class Solution {public int trap(int[] height) {// 根据卡神单调栈版写的int size = height.length;if (size <= 2) return 0; // 接不到雨水直接returnStack<Integer> stack = new Stack<Integer>();stack.push(0);int sum = 0;for (int i = 1; i < height.length; i++) {int stackTop = stack.peek(); // 求栈顶元素,判断栈顶元素与当前元素的关系if (height[i] < height[stackTop]){ // 栈顶元素 > 当前元素的时候将当前元素压入栈中,继续求解stack.push(i);} else if (height[i] == height[stackTop]) { // 栈顶元素 == 当前元素// 相等的时候,弹出旧的入新的// 虽然直接压入栈中也可以,结果不受影响,但会导致重复的计算stack.pop();stack.push(i);} else {// 栈顶元素 < 当前元素// 单调栈处理,依次弹出那些小的元素(小的元素做不了接雨水的壁)int heightAtIndex = height[i];while (!stack.isEmpty() && heightAtIndex > height[stackTop]){int mid = stack.pop();if (!stack.isEmpty()){int left = stack.peek();int h = Math.min(height[left], heightAtIndex) - height[mid];int w = i - left - 1;sum += h * w;stackTop = stack.peek();}}stack.push(i);}}return sum;}
}
http://www.khdw.cn/news/57700.html

相关文章:

  • 潍坊 logo设计公司郑州seo外包顾问
  • 一流的基础微网站开发软件编程培训学校排名
  • 广西百度推广优化推广什么意思
  • web网站开发书籍长沙百度百科
  • 网站后台密码文件谷歌搜索引擎营销
  • 网站运营维护措施有哪些国际形势最新消息
  • 淄博网站制作高端形象软件推广平台有哪些
  • 有什么做网站好用的软件百度推广二级代理商
  • 网站建设公司落寞免费推客推广平台
  • 黄埭做网站网站建设有多少公司
  • 湖南网站建设哪家专业优化推广网站seo
  • 购物网站开发需求网页设计制作软件
  • 网站标头设计最佳磁力链ciliba
  • dedecms做的网站如何上线app注册拉新平台
  • 凡科做的网站手机版活动推广软文
  • 搜索引擎营销分类网站优化联系
  • 携程网网站规划建设特点武汉seo诊断
  • java 做网站慢吗怎么免费创建个人网站
  • 网站建设资讯平台百度游戏排行榜风云榜
  • 卖钢材做哪个宣传网站长沙网站包年优化
  • 石家庄网站建设时光抖音视频排名优化
  • 网站怎么做才不会被封新手怎么学电商运营
  • 一级a做爰片免费观网站看无码营销qq
  • 宿迁做网站哪家公司好淘宝seo优化是什么
  • 日本 色彩网站关键词热度查询
  • 完整的网站建设沈阳今天刚刚发生的新闻
  • 代做视频的网站好怎么样推广自己的网址
  • 抚州网站制作百度助手应用商店下载安装
  • 浙江省城乡和住房建设厅网站崇左网站建设
  • 网站建设 合优网络最新今日头条