Dada una matriz de números enteros, devuelve verdadero si existe un triple de índices (i, j, k) tal que i
¿Puedes implementar una solución que se ejecute en complejidad de tiempo O(n) y complejidad de espacio O(1)?
Para resolver este problema de manera eficiente, debemos realizar un seguimiento de los valores más pequeños y segundos más pequeños encontrados hasta el momento. Si encontramos un tercer valor que es mayor que el segundo más pequeño, entonces hemos encontrado un triplete creciente.
La solución de fuerza bruta implica verificar todos los tripletes posibles para ver si existe uno que satisfaga la condición i
function increasingTripletBruteForce(nums: number[]): boolean { const n = nums.length; for (let i = 0; iAnálisis de complejidad temporal:
La solución de fuerza bruta no es eficiente y no es adecuada para tamaños de entrada grandes.
La solución optimizada implica iterar a través de la matriz manteniendo dos variables, la primera y la segunda, que representan el valor más pequeño y el segundo más pequeño encontrados hasta ahora. Si encontramos un valor mayor que segundo, devolvemos verdadero.
function increasingTriplet(nums: number[]): boolean { let first = Infinity; let second = Infinity; for (let num of nums) { if (numAnálisis de complejidad temporal:
console.log(increasingTripletBruteForce([1,2,3,4,5])); // true console.log(increasingTripletBruteForce([5,4,3,2,1])); // false console.log(increasingTripletBruteForce([2,1,5,0,4,6])); // true console.log(increasingTripletBruteForce([1,1,1,1,1])); // false console.log(increasingTripletBruteForce([1,2])); // false console.log(increasingTripletBruteForce([1,2,3])); // true console.log(increasingTripletBruteForce([1,5,0,4,1,3])); // true console.log(increasingTriplet([1,2,3,4,5])); // true console.log(increasingTriplet([5,4,3,2,1])); // false console.log(increasingTriplet([2,1,5,0,4,6])); // true console.log(increasingTriplet([1,1,1,1,1])); // false console.log(increasingTriplet([1,2])); // false console.log(increasingTriplet([1,2,3])); // true console.log(increasingTriplet([1,5,0,4,1,3])); // true
Problemas de subarreglo:
Técnica de dos punteros:
Algoritmos locales:
Al practicar estos problemas y estrategias, puedes mejorar tus habilidades de resolución de problemas y estar mejor preparado para diversos desafíos de codificación.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3