Solución LeetCode de subarreglo continuo sin clasificar más corto

Declaración del problema El subarreglo continuo sin ordenar más corto La solución de LeetCode dice que: dada una matriz de números enteros, debe encontrar un subarreglo continuo que, si solo ordena este subarreglo en orden ascendente, entonces todo el arreglo se ordenará en orden ascendente. Devuelve la longitud del subarreglo más corto. Ejemplo 1: …

Lea más

Solución de Leetcode de cadena de decodificación

Declaración del problema La solución LeetCode de cadena de decodificación: "Cadena de decodificación" le pide que convierta la cadena codificada en una cadena decodificada. La regla de codificación es k[cadena_codificada], donde la cadena_codificada dentro de los corchetes se repite exactamente k veces, donde k es un número entero positivo. Ejemplo: Entrada: s = ”3[a]2[bc]” Salida: “aaabcbc” …

Lea más

Aplanar árbol binario a lista enlazada Solución LeetCode

Aplanar árbol binario a lista enlazada Solución LeetCode dice que – Dada la root de un árbol binario, aplane el árbol en una "lista enlazada":

  • La "lista enlazada" debe usar el mismo TreeNode clase donde el right puntero secundario apunta al siguiente nodo en la lista y el left el puntero hijo es siempre null.
  • La "lista enlazada" debe estar en el mismo orden que una Pedido Anticipado atravesar del árbol binario.

 

Ejemplo 1:

Aplanar árbol binario a lista enlazada Solución LeetCodeEntrada:

 root = [1,2,5,3,4,null,6]

Salida:

 [1,null,2,null,3,null,4,null,5,null,6]

Ejemplo 2:

Entrada:

 root = []

Salida:

 []

Ejemplo 3:

Entrada:

 root = [0]

Salida:

 [0]

 

ALGORITMO –

OCURRENCIA -

  • Para aplanar un árbol binario, primero encontraremos el elemento más a la derecha del subárbol izquierdo y después de obtener el elemento más a la derecha vincularemos el puntero derecho de ese nodo con un subárbol derecho de un árbol dado.
  • En el paso 2 vincularemos el puntero derecho del nodo raíz con el subárbol izquierdo y estableceremos el subárbol izquierdo como nulo.
  • En el paso 3, ahora nuestro nodo raíz es un nodo del subárbol derecho, el mismo proceso ocurrirá con este nodo y el proceso continuará hasta que todas las partes de la izquierda se vuelvan nulas.

Enfoque para Flatten Binary Tree to Linked List Solución de Leetcode –

– Al principio, ejecutaré un bucle, es decir, while (raíz! = nulo), luego tomaré dos variables y almacenaré el subárbol izquierdo.

– luego verificará el nodo más a la derecha del subárbol izquierdo usando while (k.left! = null) y vinculará ese nodo con el subárbol derecho usando (k.right = root.right).

– luego vincule el puntero derecho del nodo raíz con el subárbol izquierdo (root.right = left) y establezca el puntero izquierdo del nodo raíz como nulo (root.left=null) y se actualizará por (root = root.right) por lo que ahora la raíz es correcta nodo del subárbol.

– este proceso continuará hasta que todas las partes del subárbol izquierdo se conviertan en el subárbol derecho. Por lo tanto, el árbol binario se aplanará.

 

Aplanar árbol binario a lista enlazada Solución LeetCode

Aplanar árbol binario a lista enlazada Solución LeetCode

Solución Python:

class Solution:
    def flatten(self, root: Optional[TreeNode]) -> None:
        while(root):
            
            if root.left:
                
                k = root.left
                temp = root.left
            
            
                while(k.right):
                    k = k.right
            
                k.right = root.right
            
                root.right = temp
            
                root.left = None
            
            root = root.right

Solución Java:

class Solution {
    public void flatten(TreeNode root) {       
        while (root != null) {
            if (root.left != null) {
                TreeNode k = root.left;
                TreeNode temp = root.left;
                while (k.right != null) k = k.right;
                k.right = root.right;
                root.right = temp;
                root.left = null;
            }
            root = root.right;
        }
    }
}

Complejidad del tiempo: O(N)

Complejidad espacial: O (1)

Como hemos atravesado una sola vez, la complejidad del tiempo estará o(n).

y como no hemos tomado ningún espacio extra, la complejidad del espacio será o(1) espacio extra constante.

Pregunta similar - https://www.tutorialcup.com/interview/linked-list/flattening-linked-list.htm

Organización de monedas Solución de Leetcode

Declaración del problema La solución de LeetCode de arreglo de monedas: "Arreglar monedas" le pide que construya una escalera con estas monedas. La escalera consta de k filas, donde i-ésima fila consta exactamente de i monedas. La última fila de la escalera puede no estar completa. Por la cantidad dada de monedas, devuelve...

Lea más

Temperaturas Diarias Solución Leetcode

Declaración del problema La solución de Leetcode de temperaturas diarias: establece que dada una matriz de temperaturas enteras que representan las temperaturas diarias, devuelve una respuesta de matriz tal que la respuesta [i] es la cantidad de días que debe esperar después del i-ésimo día para obtener una temperatura más cálida. Si no hay un día futuro para el cual esto sea posible, mantenga answer[i] == 0 en su lugar. …

Lea más

Solución de código de caché LRU

Declaración del problema La solución LRU Cache LeetCode: "LRU Cache" le pide que diseñe una estructura de datos que siga a la memoria caché LRU menos utilizada. Necesitamos implementar la clase LRUCache que tiene las siguientes funciones: LRUCache (capacidad int): inicializa la memoria caché LRU con capacidad de tamaño positivo. int get(int clave): Devuelve el valor...

Lea más

Eliminación mínima para hacer paréntesis válidos Solución LeetCode

Declaración del problema La eliminación mínima para hacer que los paréntesis sean válidos Solución de LeetCode: se le proporciona una cadena de '(', ')' y caracteres ingleses en minúsculas. Su tarea es eliminar el número mínimo de paréntesis ('(' o ')', en cualquier posición) para que la cadena de paréntesis resultante sea...

Lea más

Subcadena más larga sin caracteres repetidos Solución de Leetcode

Declaración del problema La subcadena más larga sin caracteres repetidos Solución LeetCode: establece que dada la cadena s. Necesitamos encontrar la subcadena más larga sin repetir caracteres. Ejemplo: Entrada: s = ”abcabcbb” Salida: 3 Explicación: La subcadena más larga sin caracteres repetidos tiene una longitud de 3. La cadena es: “abc”. Entrada: s = ”bbbbb” …

Lea más

Solución Clon Graph LeetCode

Declaración del problema Clone Graph Solución de LeetCode: se nos da una referencia de un nodo en un gráfico no dirigido conectado y se nos pide que devolvamos una copia completa del gráfico. Una copia profunda es básicamente un clon donde ningún nodo presente en la copia profunda debe tener la referencia...

Lea más

Paréntesis Válidos Solución Leetcode

Declaración del problema La solución LeetCode de paréntesis válidos: los "paréntesis válidos" indican que se le da una cadena que contiene solo los caracteres '(', ')', '{', '}', '[' y ']'. Necesitamos determinar si la cadena de entrada es una cadena válida o no. Se dice que una cadena es una cadena válida si los corchetes abiertos deben cerrarse...

Lea más

Translate »