遍历列表一次,使用哈希表(字典)存储已经查找过的值及其索引,有另一个值为n2=target-n,判断n2是否在哈希表中(时间复杂度O(1)的操作),如果在,则两个数[n2, n]的位置索引均找到。
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param numbers int整型一维数组
# @param target int整型
# @return int整型一维数组
#
class Solution:
def twoSum(self , numbers: List[int], target: int) -> List[int]:
# write code here
ret = []
ns = {}
for i, n in enumerate(numbers):
n2 = target - n
if n2 in ns:
ret.append(ns[n2]+1)
ret.append(i+1)
break
ns[n] = i
return sorted(ret)