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...