public static int maxWater(int[] arr){ if (arr == null || arr.length <= 2) { return 0; } int left = arr[0]; int[] right = new int[arr.length]; int max = 0; for (int i = arr.length - 1; i >=0; i--){ if (arr[i] > max) { right[i] = arr[i]; max = arr[i]; } else { right[i] = max; } } int res = 0; for (int i = 1; i < arr.length - 1; i++){ if (arr[i] > left) { left = arr[i]; } res += Math.max(Math.min(left, right[i]) - arr[i], 0); } return res; }
数组最大蓄水量问题(JAVA实现)
猜你喜欢
转载自www.cnblogs.com/macyzhang/p/9860143.html
今日推荐
周排行