es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tag: BACKTRACKING

Pasar por referencia y pasar sin referencia en una función.

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

incremento posterior vs +1 en función recursiva

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 qué a veces necesitamos sacar explícitamente después de una recursión cuando hacemos retroceso?

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

Confundido/a con la complejidad de tiempo y espacio.

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