package question;import java.util.Deque;import java.util.LinkedList;import java.util.concurrent.ArrayBlockingQueue;/*** @author Roderland* @since 1.0*/public class Question42 {public static void main(String[] args) {System.out.println(new Question42().trap4(new int[]{4, 2, 3}));}public int trap4(int[] height) {int res = 0;int[] maxR = new int[height.length];for (int i = height.length - 2; i >= 0; i--) {maxR[i] = Math.max(maxR[i + 1], height[i + 1]);}int maxL = 0;for (int i = 1; i < height.length - 1; i++) {maxL = Math.max(maxL, height[i - 1]);int h = Math.min(maxL, maxR[i]);res += h > height[i] ? h - height[i] : 0;}return res;}public int trap3(int[] height) {int res = 0;int[] maxL = new int[height.length];int[] maxR = new int[height.length];for (int i = height.length - 2; i >= 0; i--) {maxR[i] = Math.max(maxR[i + 1], height[i + 1]);}for (int i = 1; i < height.length; i++) {maxL[i] = Math.max(maxL[i - 1], height[i - 1]);}for (int i = 1; i < height.length - 1; i++) {int h = Math.min(maxL[i], maxR[i]);res += h > height[i] ? h - height[i] : 0;}return res;}public int trap2(int[] height) {int res = 0;for (int i = 1; i < height.length - 1; i++) {int left = 0;for (int j = i - 1; j >= 0; j--) {left = Math.max(left, height[j]);}int right = 0;for (int j = i + 1; j < height.length; j++) {right = Math.max(right, height[j]);}int h = Math.min(left, right);res += h > height[i] ? h - height[i] : 0;}return res;}public int trap1(int[] height) {int res = 0;while (true) {int left = -1;int right = -1;for (int i = 0; i < height.length; i++) {if (height[i] > 0) {left = i;break;}}for (int i = height.length - 1; i >= 0; i--) {if (height[i] > 0) {right = i;break;}}if (left == -1 || right == -1 || left == right) break;for (int i = 0; i < height.length; i++) {if (height[i] == 0 && i > left && i < right) res++;else height[i]--;}}return res;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。