public int trap(int[] height) { int result = 0; int maxValue = -1; int maxAdder = 0; //取数组最大的下标和它的值 for (int i=0;i<height.length;i++) { if (height[i] > maxValue) { maxValue = height[i]; maxAdder = i; } } for (int left = 0;left < maxAdder;left ++) { for (int i=left + 1;i<=maxAdder;i++) { if (height[i] < height[left]) { result = result + (height[left] - height[i]); } else { left = i; } } } for (int right = height.length-1;right > maxAdder;right --) { for (int i=right-1;i>=maxAdder;i--) { if (height[i] < height[right]) { result = result + (height[right] - height[i]); } else { right = i; } } } return result; }