[LeetCode] 0259. 3Suma más pequeña

Explore diversas soluciones LeetCode en Python, C++, JavaScript, SQL y TypeScript. Ideal para preparación de entrevistas, aprendizaje y práctica de código en múltiples lenguajes de programación. Enlace de repositorio de Github

Tabla de contenido

Duro

 


Te dan una matriz precios dónde precios[i] es el precio de una determinada acción en el yo día.

Encuentra el máximo beneficio que puedes lograr. como máximo dos transacciones.

Nota: No puede realizar múltiples transacciones simultáneamente (es decir, debe vender las acciones antes de volver a comprarlas).

Ejemplo 1:

Aporte: precios = [3,3,5,0,0,3,1,4]
Producción: 6
Explicación: Compre el día 4 (precio = 0) y venda el día 6 (precio = 3), beneficio = 3-0 = 3. Luego compre el día 7 (precio = 1) y venda el día 8 (precio = 4), beneficio = 4-1 = 3.

Ejemplo 2:

Aporte: precios = [1,2,3,4,5]
Producción: 4
Explicación: Compre el día 1 (precio = 1) y venda el día 5 (precio = 5), ganancia = 5-1 = 4. Tenga en cuenta que no puede comprar el día 1, comprar el día 2 y venderlos más tarde, ya que está participando. múltiples transacciones al mismo tiempo Debes vender antes de volver a comprar.

Ejemplo 3:

Aporte: precios = [7,6,4,3,1]
Producción: 0
Explicación: En este caso, no se realiza ninguna transacción, es decir, beneficio máximo = 0.

Restricciones:

  • 1 <= precios.longitud <= 10 5
  • 0 <= precios[i] <= 10 5

Pitón

				
					Complejidad de tiempo de #: O(n^2) Complejidad de espacio de #: O(1) al escribir clase de lista de importación Solución: def threeSumSmaller(self, nums: List[int], target: int) -> int: result = 0 nums. sort() para i en rango(len(nums) - 1): resultado += self.twoSumSmaller(nums, i + 1, target - nums[i]) devuelve resultado def twoSumSmaller(self, nums: List[int], startIdx: int, target: int) -> int: izquierda = startIdx derecha = len(nums) - 1 resultado = 0 mientras izquierda < derecha: if nums[izquierda] + nums[derecha] < destino: resultado += derecha - izquierda izquierda += 1 más: derecha -= 1 devolver resultado números = [-2, 0, 1, 3] objetivo = 2 imprimir(Solución().tresSumSmaller(nums, objetivo))
				
			
es_ESEspañol