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

成都微信网站建设推重庆建设医院官方网站

成都微信网站建设推,重庆建设医院官方网站,娄底网站建设的公司,邮政营销案例100例原文链接:42. 接雨水 - 力扣(LeetCode) 1、题目解析 解读:给定一个数组,使数组的值为高形成柱子,按照短板效应原理能剩多少水。 核心思想: 每一个坐标位置可以承装的水 min(左边最高柱子&…

原文链接:42. 接雨水 - 力扣(LeetCode)

1、题目解析

解读:给定一个数组,使数组的值为高形成柱子,按照短板效应原理能剩多少水。

核心思想:

        每一个坐标位置可以承装的水= min(左边最高柱子,右边最高柱子)- 该坐标值

 

2、编码实现

方法一

我们可以用两个数组,一个用来记录每一个坐标值的左边中柱子的最高值,一个用来记录每一个坐标值右边中柱子的最高值。当我们要记录某一个坐标值能盛装多少水时,根据上面提供的公式,只要在这两个数组中取出该坐标对应的值即可。

    /** 方法一:时间复杂度O(n),空间复杂度O(n)* 思路:对于每个位置i,能装的水量是:min(左边最高的柱子,右边最高的柱子)-height[i]*  1.先计算每个位置左边最高的柱子,存入pre_Max数组*  2.再计算每个位置右边最高的柱子,存入suf_Max数组*  3.遍历每个位置i,计算能装的水量,并累加到ans中* */public static int trap(int[] height) {int ans = 0;int len = height.length;int[] pre_Max = new int[len];pre_Max[0] = height[0];for(int i = 1;i<len;i++){pre_Max[i] = Math.max(pre_Max[i-1],height[i]);}int[] suf_Max = new int[len];suf_Max[len-1] = height[len-1];for(int j = len-2;j>=0;j--){suf_Max[j] = Math.max(suf_Max[j+1],height[j]);}int a=1;for(int k = 0;k<len;k++){int min = Math.min(suf_Max[k],pre_Max[k]);ans += min-height[k];}return ans;}

方法二:双指针

  1. 两指针分别从数组左右端点开始遍历
  2. 两个指针记录的是遍历到的最高值
  3. 对比左右指针的当前值,谁小谁移动
  4. 当指针遍历到某一节点时,因为是谁小谁移动,所以另一个指针的值一定是比当前指针的值大的,也就是说另一侧更高。
  5. 所以让盛装的水量+(当前这一侧的最大值 - 当前指针的值)

编码实现:

/** 优化:可以使用双指针,时间复杂度O(n),空间复杂度O(1)*  方法二:双指针* *  思路:使用双指针,左指针left和右指针right,初始时分别指向数组的两端*  1、两指针分别从数组左右端点开始遍历*  2、两个指针记录的是遍历到的最高值*  3、对比左右指针的当前值,谁小谁移动*  4、当指针遍历到某一节点时,因为是谁小谁移动,所以另一个指针的值一定是比当前指针的值大的,也就是说另一侧更高。*  5、因此可以计算当前指针能装的水量:ans += pre_max - height[left] 或 ans += suf_max - height[right]* *  时间复杂度O(n),空间复杂度O(1)*  注意:如果数组长度小于3,则无法形成容器,直接返回0* */public static int trap2(int[] height) {int ans = 0;int len = height.length;int left = 0,pre_max = 0;int right = len-1,suf_max = 0;while(left<=right){pre_max = Math.max(pre_max,height[left]);suf_max = Math.max(suf_max,height[right]);if(pre_max<suf_max){ans += pre_max-height[left];left++;}else {ans += suf_max-height[right];right--;}}return ans;}

http://www.dtcms.com/a/600465.html

相关文章:

  • 做公司网站需要注意什么国内seo公司哪家最好
  • 环保部网站官网建设项目限批办法江西网站建设哪家好
  • 做公司网站要注意什么免费建立网站空间
  • 信融营销型网站建设网站托管团队
  • 云平台网站开发wordpress 多商户
  • linux建网站为什么要学电商网站建设
  • 怎么网站搜索排名优化企业app定制开发设计方案
  • 中医网站开发国家车辆保险网站
  • 网站开发主流WordPress主题开发核心知识
  • 怎样做品牌推广网站流程图制作网站
  • 高青县住房和城乡建设局网站wordpress 需要授权吗
  • 网站建设教程软件下载怎么把网站做的好看
  • 上海网站建设方法app开发公司哪家好求推荐
  • 网站收录原创文章河南it渠道网
  • 潍坊网站制作企业个人免费网站建站排名
  • 网站怎么做微信推广信息流广告创意
  • 一般做网站是在什么网站找素材网站引导页动态效果怎么做的
  • 汕头市公司网站建设多少钱做抖音seo排名软件是否合法
  • 网站服务器空间租用网络公司业务范围
  • 东莞网站设计风格怎么套模板 网站模板
  • 东莞免费网站建设网络营销黄骅贴吧
  • cf网站编程wordpress插件如何破解
  • 网站发帖功能怎么做厦门网络推广建网站
  • 济南优化网站的哪家好做特殊原产地证的网站
  • 官网网站建设山东做网站建设的好公司哪家好
  • 苏州外贸网站建设优化推广柳州网站建设排行榜
  • 温州专业微网站制作价格黑客零基础入门
  • 织梦搭建网站腾讯云怎么备案网站吗
  • 建设银行网站入口推广引流违法吗
  • 网站设计与网页制作心得体会网站侧导航