42. 接雨水
Posted zzytxl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了42. 接雨水相关的知识,希望对你有一定的参考价值。
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。
示例:
输入: [0,1,0,2,1,0,1,3,2,1,2,1] 输出: 6
元素只受左右两边最高处高度的影响
class Solution { public int trap(int[] height) { if(height == null || height.length == 0) return 0; int len = height.length; int lM = height[0],rM = height[len - 1]; int l = 0,r = len - 1; int res = 0; while(l < r){ if(lM < rM){ //左指针向右移动 if(height[l] > lM){ //更新lM lM = height[l]; }else{ res += lM - height[l++]; } }else{ if(height[r] > rM){ //更新rM rM = height[r]; }else{ res += rM - height[r--]; } } } return res; } }
以上是关于42. 接雨水的主要内容,如果未能解决你的问题,请参考以下文章