题解 | #接雨水问题#
接雨水问题
https://www.nowcoder.com/practice/31c1aed01b394f0b8b7734de0324e00f
- 与上一题类似,计算最大容量,由于“短板效应”,每次都选短的一边开始计算;
- 然后将从短边开始可以装入的水量累加,继续迭代;
-
public long maxWater (int[] arr) { // write code here int l=0,r=arr.length-1; long res=0; int ml=0,mr=0; while(l<r){ ml=Math.max(ml,arr[l]);//选取较大值作为当前的最左边界 mr=Math.max(mr,arr[r]);//选取较大值作为当前的最右边界 if(ml<mr){//由于短板效应,选较短的一边开始计算 res+=ml-arr[l++]; }else res+=mr-arr[r--]; } return res; }