Categorías
Algorithms Interview Java

LeetCode – Recipiente con más agua (Java)

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 rightHeight, muévase hacia la izquierda y busque un valor que sea mayor que rightHeight. Además, siga rastreando el valor máximo.

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;
}

  LeetCode - Número feliz (Java)

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *