import java.util.*; public class Solution { /** * max water * @param arr int整型一维数组 the array * @return long长整型 */ public long maxWater (int[] arr) { if(arr == null || arr.length < 3) return 0 ; int left = 0 ;//标记左边界 int right = arr.length - 1 ;//标记右边界 int cur = 0 ;//当前指针 int count = 0 ;//记录体积 while(left < right) { //求出短板 int min = arr[left] < arr[right] ? arr[left] : arr[right] ; if(min == arr[left]) {//如果短板是左边,就从左边开始计算,直到找到一个更长的板 cur = left + 1 ; while(cur <= right && arr[cur] <= min) { count += (min - arr[cur++]) ; } left = cur ; } else {//长板是右边,类似。 cur = right - 1 ; while(cur >= left && arr[cur] <= min) { count += (min - arr[cur--]) ; } right = cur ; } } return count ; } }