📅  最后修改于: 2023-12-03 15:12:14.886000             🧑  作者: Mango
此题是关于算术能力的考验,需要编写程序完成一个简单的数学运算。
给定一个长度为 $n$ 的整数数组 $nums$ 和一个目标值 $target$,请你在该数组中找出和为目标值的两个整数并返回它们的下标。假设每种输入只会对应唯一的答案,且同样的元素不能被重复利用。
你可以按任意顺序返回答案。
输入:
nums = [2, 7, 11, 15], target = 9
输出:
[0, 1]
解释:因为 nums[0] + nums[1] = 2 + 7 = 9,所以返回 [0, 1]。
本题考察的是数组的遍历和求和,一般思路是使用两层循环,分别枚举数组中的每两个数,判断它们的和是否等于目标值。
时间复杂度为 $O(n^2)$。
还可以使用哈希表来存储已经遍历过的元素及其下标,每次查找时检查哈希表中是否存在与目标值相减的元素,如果存在则说明找到了答案。
时间复杂度为 $O(n)$。
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
d = {}
for i, value in enumerate(nums):
if target - value in d:
return [d[target - value], i]
d[value] = i
本题是算法题中的经典问题,是编程和算法能力的综合考察。掌握常用的数据结构和算法思想,对提高编程能力和应对算法面试都有重要的意义。