Two Sum II - Input Array Is Sorted
Este problema consiste en, dada una lista ordenada, encontrar dos valores que sumados den el objetivo y regresar los índices.
Solución
class Solution(object):
def twoSum(self, numbers, target):
"""
:type numbers: List[int]
:type target: int
:rtype: List[int]
"""
idx = 0
l = len(numbers)
jdx = l-1
while idx < l:
v1 = numbers[idx]
v2 = numbers[jdx]
dif = target - (v1+v2)
if dif == 0:
return [idx+1, jdx+1]
elif dif < 0:
jdx -=1
elif dif > 0:
idx += 1
Este problema es de dos punteros: uno al principio y uno al final. Si a la suma de ambos elementos le falta, aumentamos el primero, pues sabemos que la suma va a aumentar; si es mayor, reducimos el segundo porque sabemos que la suma se va a reducir.