标签:app content trap 表示 移动 分表 影响 tco while
给定 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; } }
标签:app content trap 表示 移动 分表 影响 tco while
原文地址:https://www.cnblogs.com/zzytxl/p/12665911.html