Ejercicios Prácticos con Listas Enlazadas y Historial de Navegador
Clase 22 de 41 • Curso de Algoritmos Avanzados: Estructuras de Datos Lineales
Ejercicios recomendados de Lista Enlazada
Sumar dos números
Se dan dos listas enlazadas no vacías que representan dos enteros no negativos. Los dígitos están almacenados en orden inverso, y cada uno de sus nodos contiene un solo dígito. Suma los dos números y devuelve la suma como una lista enlazada.
Puede suponer que los dos números no contienen ningún cero inicial, excepto el propio número 0.
Ejemplo 1:
Entrada: l1 = [2,4,3], l2 = [5,6,4] Salida: [7,0,8] Explicación: 342 + 465 = 807.
Intercambio de nodos por parejas
Dada una lista enlazada, intercambia cada dos nodos adyacentes y devuelve su cabeza. Debe resolver el problema sin modificar los valores de los nodos de la lista (es decir, sólo se pueden cambiar los propios nodos).
Ejemplo 1: Entrada: cabeza = [1,2,3,4] Salida: [2,1,4,3]
Historial de un Navegador
Tienes un navegador de una pestaña donde empiezas en la página de inicio y puedes visitar otra url, retroceder en el historial número de pasos o avanzar en el historial número de pasos.
Implementa la clase BrowserHistory:
BrowserHistory(string homepage): inicializa el objeto con la página de inicio del navegador. void visit(string url): visita la url de la página actual. Borra todo el historial de avance. string back(int steps): mueve los pasos hacia atrás en el historial. Si sólo puede devolver x pasos en el historial y pasos > x, devolverá sólo x pasos. Devuelve la url actual después de retroceder como máximo pasos en el historial. string forward(int steps): mover pasos hacia adelante en el historial. Si sólo puede avanzar x pasos en el historial y pasos > x, avanzará sólo x pasos. Devuelve la url actual después de avanzar en el historial como máximo pasos.
Ejemplo:
Entrada: ["BrowserHistory", "visita", "visita", "visita", "atrás", "atrás", "adelante", "visita", "adelante", "atrás", "atrás"] [["leetcode.com"],["google.com"],["facebook.com"],["youtube.com"],[1],[1],[1],["linkedin.com"],[2],[2],[7]] Salida: [null,null,null, "facebook.com", "google.com", "facebook.com",null, "linkedin.com", "google.com", "leetcode.com"]```
Explicación:
BrowserHistory browserHistory = new BrowserHistory("leetcode.com"); browserHistory.visit("google.com"); // Estás en "leetcode.com". Visita "google.com" browserHistory.visit("facebook.com"); // Estás en "google.com". Visita "facebook.com" browserHistory.visit("youtube.com"); // Estás en "facebook.com". Visita "youtube.com" browserHistory.back(1); // Estás en "youtube.com", vuelve a "facebook.com" retornas "facebook.com" browserHistory.back(1); // Estás en "facebook.com", vuelve a "google.com" retornas "google.com" browserHistory.forward(1); // Estás en "google.com", avanza hasta "facebook.com" return "facebook.com" browserHistory.visit("linkedin.com"); // Estás en "facebook.com". Visita "linkedin.com" browserHistory.forward(2); // Estás en "linkedin.com", no puedes avanzar ningún paso. browserHistory.back(2); // Estás en "linkedin.com", retrocede dos pasos a "facebook.com" y luego a "google.com". devuelve "google.com" browserHistory.back(7); // Estás en "google.com", puedes retroceder sólo un paso hasta "leetcode.com". Retornas "leetcode.com"