Se le dan n enteros no negativos a1, a2, ..., an, y cada número representa un punto (i, ai) en coordenadas. Dibuje n líneas verticales en las coordenadas. Los dos puntos finales de la línea vertical i son (i, ai) y (i, 0). Encuentre dos de las líneas para que el contenedor que forman con el eje x pueda contener la mayor cantidad de agua.
Nota: No puede inclinar el contenedor, y el valor de n es al menos 2.
Ejemplos:
Entrada: [1,8,6,2,5,4,8,3,7]
Salida: 49
Idea: Doble puntero, vea que el código es claro y fácil de entender
1 int maxArea (vector < int > & height) 2 { 3 int res = 0 ; 4 int i = 0 ; 5 int j = height.size () - 1 ; 6 7 while (i < j) 8 { 9 int area = (ji) * min (altura [i], altura [j]); 10 res = max (área, res); 11 if (altura [i] < altura [j]) 12 { 13 i ++ ; 14 } 15 más 16 { 17 j-- ; 18 } 19 } 20 retorno res; 21 }