给定一个整形数组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); } }