Contenidos
Ejemplo 1: Suma de dos números (Two Sum)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
def two_sum(nums, target): # Crear un diccionario para almacenar el índice de cada número num_map = {} # Iterar sobre la lista de números for i, num in enumerate(nums): # Calcular el complemento que, junto con el número actual, suma el objetivo complement = target - num # Si el complemento ya está en el diccionario, hemos encontrado la solución if complement in num_map: return [num_map[complement], i] # De lo contrario, almacenar el número actual y su índice en el diccionario num_map[num] = i return [] |
Ejemplo 2: Longest substring without repeating characters
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
def length_of_longest_substring(s): # Diccionario para almacenar la última posición de cada carácter char_index = {} max_length = 0 start = 0 # Iterar sobre la cadena de caracteres for i, char in enumerate(s): # Si el carácter ya ha sido encontrado y está en el rango de la subcadena actual if char in char_index and start <= char_index[char]: start = char_index[char] + 1 else: max_length = max(max_length, i - start + 1) # Actualizar la última posición del carácter actual char_index[char] = i return max_length |
Ejemplo 3: Valid parentheses
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
def is_valid(s): # Mapa de pares de paréntesis bracket_map = {")": "(", "]": "[", "}": "{"} stack = [] # Iterar sobre cada carácter en la cadena for char in s: # Si es un paréntesis de cierre if char in bracket_map: # Comparar con el último paréntesis de apertura en la pila top_element = stack.pop() if stack else '#' if bracket_map[char] != top_element: return False else: stack.append(char) return not stack |
Ejemplo 4: Merge two sorted lists
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def merge_two_lists(l1, l2): dummy = ListNode() current = dummy # Comparar los nodos de ambas listas enlazadas while l1 and l2: if l1.val < l2.val: current.next = l1 l1 = l1.next else: current.next = l2 l2 = l2.next current = current.next # Adjuntar el resto de la lista que aún tiene nodos current.next = l1 or l2 return dummy.next |
Ejemplo 5: Median of two sorted arrays
1 2 3 4 5 6 7 8 9 10 |
def find_median_sorted_arrays(nums1, nums2): # Unir ambas listas y ordenarlas nums = sorted(nums1 + nums2) length = len(nums) # Calcular la mediana if length % 2 == 1: return nums[length // 2] else: return (nums[length // 2 - 1] + nums[length // 2]) / 2 |