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

青岛网站建设推广信息网络公司网站建设选平台

青岛网站建设推广信息网络公司,网站建设选平台,免备案网站建站,杭州市拱墅区建设局网站Problem: 42. 接雨水 文章目录 思路解题方法复杂度Code 思路 要能接住雨水,感性的认知就是要形成一个“下凹区域”,则此时我们就要比较当前柱子和其左右柱子高度的关系,易得一个关键的式子:当前小区域的积水 min(当前…

Problem: 42. 接雨水

文章目录

  • 思路
  • 解题方法
  • 复杂度
  • Code

思路

要能接住雨水,感性的认知就是要形成一个“下凹区域”,则此时我们就要比较当前柱子和其左右柱子高度的关系,易得一个关键的式子:当前小区域的积水 = min(当前柱子左侧最高柱子高度,当前柱子右侧最高柱子高度) - 当前柱子高度;但我们也应当注意按上式得出的结果当前小区域的积水可能为负值,因为当前柱子的高度可能大于min(当前柱子左侧最高柱子高度,当前柱子右侧最高柱子高度),实际情况也就是无法形成一个接住水的区域,则我们将其设置为0。

解题方法

1.暴力法:一遍遍历,每次寻找当前柱子左、右侧的最高柱子,再将min(当前柱子左侧最高柱子高度,当前柱子右侧最高柱子高度) - 当前柱子高度加到结果上(注意若其结果为正则直接加,为负置为0)
2.前缀和:先通过遍历每次记录当前柱子及其左侧的最高值当前柱子及其右侧柱子的最高值,再将min(当前柱子及其左侧的最高值,当前柱子及其右侧柱子的最高值)-当前柱子的高度值加到结果上(注意此时由于在记录当前柱子及其左侧的最高值当前柱子及其右侧柱子的最高值的操作中已经记录了当前柱子的高度值,则最后再不用判断每次要加到结果上的值是否小于0)

复杂度

  • 时间复杂度:

暴力法: O ( n 2 ) O(n^2) O(n2)
前缀和: O ( n ) O(n) O(n)

  • 空间复杂度:

暴力法: O ( 1 ) O(1) O(1)
前缀和: O ( n ) O(n) O(n)

Code

class Solution {//暴力法//Time Complexity: O(N^2)//Space Complexity: O()public int trap(int[] height) {int res = 0;//从第2()个柱子开始到倒数第二个for (int i = 1; i < height.length - 1; ++i) {//寻找当前左侧最高柱子int leftMax = 0;for (int j = 0; j < i; ++j) {if (height[j] > leftMax) {leftMax = height[j];}}//寻找当前右侧最高柱子int rightMax = 0;for (int j = i + 1; j < height.length; ++j) {if (height[j] > rightMax) {rightMax = height[j];}}//当前柱子两侧最高柱子的较低值//减去当前柱子的长度即为当前储水量//如果carry小于0,则为0int carry = Math.min(rightMax,leftMax) - height[i];if (carry < 0) carry = 0;res += carry;}return res;}
}

class Solution {//前缀数组//Time Complexity: O(N)//Space Complexity: O(N)public int trap(int[] height) {int n = height.length;//前缀maxint[] leftMax = new int[n];int max = 0;for (int i = 0; i < n; ++i) {//寻找当前左边(包括本身)的最大值leftMax[i] = Math.max(max,height[i]);max = leftMax[i];}//后缀maxint[] rightMax = new int[n];max = 0;for (int i = n - 1; i >= 0; --i) {//寻找当前右边边(包括本身)的最大值rightMax[i] = Math.max(max,height[i]);max = rightMax[i];}//计算柱子之上接到的雨水int res = 0;for (int i = 1; i < n - 1; ++i) {res += Math.min(leftMax[i], rightMax[i]) - height[i];}return res;}
}
http://www.yayakq.cn/news/680637/

相关文章:

  • 优化网站工具新浪云搭建wordpress
  • 苏州电子商务网站开发公司旅游主题 wordpress
  • ps做的网站图片好大263企业邮箱 登陆
  • 专业网站设计第三方服务个人有限公司注册流程
  • wps文字可以做网站吗百度左侧优化
  • 返回链接 网站惩罚检查 错误检查谷歌关键词搜索量数据查询
  • 个人服务器网站备案08影院wordpress主题
  • 外贸型网站建设的基本流程阿里云网站备案多少天
  • 企业网站案例展示wordpress 外链 预览
  • 蛋糕网站建设方案怎样在百度上发表文章
  • 企业服务网站制作郑州定制网站建设
  • 网站开发服务费计入哪个科目WordPress维护模式退出
  • 站长统计软件wordpress管理后台
  • 重庆找做墩子网站百度旧版本
  • wordpress带轮播企业站主题WordPress十万数据可以
  • 导航网站是怎么做的怎么做网页下载链接
  • 视频微网站开发建设小网站教程
  • 邯郸网站设计费用wordpress密码漏洞
  • 做空包网站下拉关键词排名
  • 长春找工作哪个网站好郑州二七区最新消息
  • 太原网站快速排名优化网络广告营销策略
  • 嘉兴网站建设推荐浙江华企网站导航栏兼容性
  • seo网站推广的主要目的是什么wordpress增加字体
  • 国内设计网站网站生成手机页面
  • 网站开发要用什么语言wordpress 登录
  • 知名商城网站建设wordpress如何修改前端
  • 网络规划设计 网站建设百度一下百度一下你就知道
  • 阿里云建站和华为云建站哪个好wordpress双语主题
  • 网站模板种类什么网站可以找人做设计师
  • 沈阳网站建设扁平风格网站欣赏