leetcode之 两数之和
from typing import List
class Solution:
def two_sum(self, nums: List[int], target: int):
d = {}
for index, value in enumerate(nums):
if value in d:
return index, d.get(value)
d[target - value] = index
if __name__ == '__main__':
s = Solution()
nums = [2, 7, 11, 15]
target = 9
print(s.two_sum(nums, target))
这道题最优的做法时间复杂度是 O(n)。
遍历数组,对每一个元素,在 字典 中找能组合给定值的另一半数字,如果找到了,直接返回两个数字的下标即可。如果找不到,就把这个数字存入 map 中,等待扫到“另一半”数字的时候,再取出来返回结果。
字典解释:
键:另一半数字
值:当前数字的下标