📅  最后修改于: 2023-12-03 15:41:09.464000             🧑  作者: Mango
给定一个整数数组 nums 和一个目标值 target,请在该数组中找出和为目标值的两个整数。
最直观的想法是使用暴力枚举,复杂度为 O(n^2)
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
n = len(nums)
for i in range(n):
for j in range(i+1, n):
if nums[i] + nums[j] == target:
return [i, j]
return [-1, -1]
更好的方法是使用哈希表,复杂度为 O(n)
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
n = len(nums)
hash_table = {}
for i in range(n):
if target - nums[i] in hash_table:
return [hash_table[target - nums[i]], i]
hash_table[nums[i]] = i
return [-1, -1]