题解 | #容器盛水问题#
容器盛水问题
http://www.nowcoder.com/practice/31c1aed01b394f0b8b7734de0324e00f
public static long maxWater(int[] arr) { if (arr.length == 0) { return 0; } int l = 0; int r = arr.length - 1; long res = 0; while (r > l) { int tmp = Math.min(arr[r], arr[l]); // 找到最小的边界 盛水由最小边界决定 // 找完一个凹槽 while (r > l && arr[l] <= tmp) { // 边界向中间缩 逐步寻找凹槽 res += tmp - arr[l]; l++; } // 开始找下一个凹槽 while (r > l && arr[r] <= tmp) { // 边界向中间缩 逐步寻找凹槽 res += tmp - arr[r]; r--; } } return res; }