leetcode之 兩數之和

2022-02-21 21:08:39 字數 591 閱讀 1771

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 中,等待掃到「另一半」數字的時候,再取出來返回結果。

字典解釋:

鍵:另一半數字

值:當前數字的下標

LeetCode之兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...

LeetCode之兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...

Leetcode之兩數之和

題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1...