遍历列表一次,使用哈希表(字典)存储已经查找过的值及其索引,有另一个值为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)