给定一个整形数组arr,已知其中所有的值都是非负的,将这个数组看作一个容器,请返回容器能装多少水。
具体请参考样例解释
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String[] strArr = br.readLine().split(" ");
int[] heights = new int[n];
for(int i = 0; i < n; i++) heights[i] = Integer.parseInt(strArr[i]);
int leftMax = heights[0], rightMax = heights[n - 1];
int left = 0, right = n - 1;
long volumn = 0;
while(left < right){
leftMax = Math.max(leftMax, heights[left]);
rightMax = Math.max(rightMax, heights[right]);
if(leftMax < rightMax){
volumn += leftMax - heights[left];
left ++;
}else{
volumn += rightMax - heights[right];
right --;
}
}
System.out.println(volumn);
}
}