Problema
Dados n enteros no negativos a1, a2, …, an, donde cada uno representa un punto en la coordenada (i, ai). Se dibujan n líneas verticales de modo que los dos puntos finales de la línea i estén en (i, ai) y (i, 0). Encuentre dos líneas, que junto con el eje x formen un recipiente, de modo que el recipiente contenga la mayor cantidad de agua.
Análisis
Inicialmente podemos asumir que el resultado es 0. Luego escaneamos desde ambos lados. Si leftHeight
Solución Java
public int maxArea(int[] height) { if (height == null || height.length < 2) { return 0; } int max = 0; int left = 0; int right = height.length - 1; while (left < right) { max = Math.max(max, (right - left) * Math.min(height[left], height[right])); if (height[left] < height[right]) left++; else right--; } return max; } |