Tag: BACKTRACKING
Enfoque 1: Aquí podemos ver la ecuación de recurrencia, que es T(N) = N * T(N-1) + c, por lo que la complejidad de tiempo final resulta ser O(N!), lo cual tiene sentido. Enfoque 2: La diferencia entre este código y el enfoque 1 es que estamos realizando un trabajo . . . Read more
Estaba resolviendo este problema: https://leetcode.com/problems/permutations-ii/ Aquí está mi solución de trabajo: class Solution { public: vector<><int>> output; void swap(vector<int>& nums, int index, int i){ int temp=nums[index]; nums[index]=nums[i]; nums[i]=temp; return; } void helper(vector<int> nums, int index){ //aquí se pasa normalmente if(index==nums.size()){ output.push_back(nums); return; } for(int i=index; i<nums.size(); i++){=”” if(i!=”index” &&=”” nums[i]=”=nums[index]){continue;}” . . . Read more
Estaba trabajando en Leetcode nº 22, Generar Paréntesis. En una de sus soluciones, noté que si cambiamos open+1 y close+1 a ++open y ++close, el código ya no funciona. Pensé que aún podíamos usar la pre-incrementación en la recursión, así que no entiendo qué hace la diferencia aquí. “`java class . . . Read more
Por ejemplo, consideremos una tarea en la que necesitamos encontrar todas las permutaciones de una cadena dada preservando la secuencia de caracteres pero cambiando la mayúscula y minúscula. Aquí hay una solución de backtracking sin .pop(): def letterCasePermutation(S): “”” :type S: str :rtype: List[str] “”” def backtrack(sub=””, i=0): if len(sub) . . . Read more
Escribí un algoritmo de backtracking que resultó en TLE, lo cual fue esperado. Pero quería hacer el análisis de complejidad de tiempo para él. Pensé que haríamos llamadas a la función recursiva 2N veces, luego 2N-1 veces, luego 2N-2 veces, y así sucesivamente. En total hacemos (2N)! llamadas y en . . . Read more