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.
classListNode: def __init__(self, val=0, next=None): self.val= val
self.next= next
classSolution: def sumarDosNumeros(self,nodo1:ListNode,nodo2:ListNode)->ListNode: cabezaTemporal =ListNode() apuntador1 = nodo1
apuntador2 = nodo2
nodoActual = cabezaTemporal
lleva =0while apuntador1 or apuntador2: x = apuntador1.valif apuntador1 else0 y = apuntador2.valif apuntador2 else0 current_sum = lleva + x + y
lleva = current_sum // 10 nodoActual.next=ListNode(current_sum %10) nodoActual = nodoActual.nextifapuntador1: apuntador1 = apuntador1.nextifapuntador2: apuntador2 = apuntador2.nextiflleva: nodoActual.next=ListNode(lleva)return cabezaTemporal.next
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).
# Definitionfor singly-linked list.classListNode: def __init__(self, val=0, next=None): self.val= val
self.next= next
classSolution: def swapPairs(self,cabeza:ListNode)->ListNode: nodoActual = cabeza
if nodoActual ==None:returnNonewhile nodoActual !=None and nodoActual.next!=None:if nodoActual.val== nodoActual.next.val: nodoActual = nodoActual.next.nextelse: nodoActual.val, nodoActual.next.val= nodoActual.next.val, nodoActual.val nodoActual = nodoActual.next.nextreturn cabeza
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.
BrowserHistory browserHistory =newBrowserHistory("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"