Python escribe un problema de algoritmo todos los días
primer día
Pregunta: Dado un número de matriz de enteros y un objetivo de valor objetivo, busque los dos enteros cuya suma sea el valor objetivo en la matriz y devuelva sus subíndices de matriz.
Puede asumir que cada entrada solo corresponderá a una respuesta. Sin embargo, el mismo elemento de la matriz no se puede utilizar dos veces.
Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/two-sum
1. Algoritmo de fuerza bruta
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in range(0, len(nums)):
for j in range(i + 1, len(nums)):
if nums[i] + nums[j] == target:
return [i, j]
return[]
2. Utilice el diccionario para simular una solución hash
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashmap = {}
for ind, num in enumerate(nums):
hashmap[num] = ind
# hashmap = {(2,0),(7,1),(11,2),(15,3)}
for i, num in enumerate(nums):
j = hashmap.get(target - num)
# j : 2 7 None None
if j is not None and i != j:
return [i, j]